diff options
Diffstat (limited to '')
-rw-r--r-- | configure.ac | 793 |
1 files changed, 437 insertions, 356 deletions
diff --git a/configure.ac b/configure.ac index db80de2..6bff02e 100644 --- a/configure.ac +++ b/configure.ac @@ -8,9 +8,12 @@ dnl dnl This source code is licensed under the GNU General Public License version 2 dnl or later (GPLv2+) WITHOUT ANY WARRANTY. -dnl =============================================== -dnl Bootstrap -dnl =============================================== + +dnl ============================================== +dnl Bootstrap autotools +dnl ============================================== + +# Require a minimum version of autoconf itself AC_PREREQ(2.64) dnl AC_CONFIG_MACRO_DIR is deprecated as of autoconf 2.70 (2020-12-08). @@ -20,41 +23,26 @@ m4_ifdef([AC_CONFIG_MACRO_DIRS], [AC_CONFIG_MACRO_DIRS([m4])], [AC_CONFIG_MACRO_DIR([m4])]) -AC_DEFUN([AC_DATAROOTDIR_CHECKED]) - -dnl Suggested structure: -dnl information on the package -dnl checks for programs -dnl checks for libraries -dnl checks for header files -dnl checks for types -dnl checks for structures -dnl checks for compiler characteristics -dnl checks for library functions -dnl checks for system services - m4_include([m4/version.m4]) AC_INIT([pacemaker], VERSION_NUMBER, [users@clusterlabs.org], [pacemaker], PCMK_URL) -PCMK_FEATURES="" - LT_CONFIG_LTDL_DIR([libltdl]) AC_CONFIG_AUX_DIR([libltdl/config]) -AC_CANONICAL_HOST dnl Where #defines that autoconf makes (e.g. HAVE_whatever) go dnl -dnl Internal header: include/config.h -dnl - Contains ALL defines +dnl include/config.h +dnl - Internal API +dnl - Contains all defines dnl - include/config.h.in is generated automatically by autoheader -dnl - NOT to be included in any header files except crm_internal.h +dnl - Not to be included in any header files except crm_internal.h dnl (which is also not to be included in any other header files) dnl -dnl External header: include/crm_config.h -dnl - Contains a subset of defines checked here -dnl - Manually edit include/crm_config.h.in to have configure include -dnl new defines +dnl include/crm_config.h +dnl - External API +dnl - Contains a subset of defines +dnl - include/crm_config.h.in is manually edited to select the subset dnl - Should not include HAVE_* defines dnl - Safe to include anywhere AC_CONFIG_HEADERS([include/config.h include/crm_config.h]) @@ -72,27 +60,57 @@ AS_IF([test x"${PKG_CONFIG}" != x""], [], PKG_INSTALLDIR PKG_NOARCH_INSTALLDIR -dnl Example 2.4. Silent Custom Rule to Generate a File -dnl %-bar.pc: %.pc -dnl $(AM_V_GEN)$(LN_S) $(notdir $^) $@ - -CC_IN_CONFIGURE=yes -export CC_IN_CONFIGURE -LDD=ldd - -dnl ======================================================================== -dnl Compiler characteristics -dnl ======================================================================== +dnl ============================================== +dnl Compiler checks and helpers +dnl ============================================== dnl A particular compiler can be forced by setting the CC environment variable AC_PROG_CC +dnl C++ is needed only to run maintainer utilities, not to build +AC_PROG_CXX + dnl Use at least C99 if possible (automatic for autoconf >= 2.70) m4_version_prereq([2.70], [:], [AC_PROG_CC_STDC]) -dnl C++ is not needed for build, just maintainer utilities -AC_PROG_CXX +# cc_supports_flag <compiler-flag> +# Return success if the C compiler supports the given flag +cc_supports_flag() { + local CFLAGS="-Werror $@" + AC_MSG_CHECKING([whether $CC supports $@]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ]], [[ ]])], + [RC=0; AC_MSG_RESULT([yes])], + [RC=1; AC_MSG_RESULT([no])]) + return $RC +} + +# cc_temp_flags <compiler-flags> +# Use the given flags for subsequent C compilation. These can be reverted to +# what was used previously with cc_restore_flags. This allows certain tests to +# use specific flags without affecting anything else. +cc_temp_flags() { + ac_save_CFLAGS="$CFLAGS" + CFLAGS="$*" +} + +# cc_restore_flags +# Restore C compiler flags to what they were before the last cc_temp_flags +# call. +cc_restore_flags() { + CFLAGS=$ac_save_CFLAGS +} + +# Check for fatal warning support +AS_IF([test $enable_fatal_warnings -ne $DISABLED dnl + && test x"$GCC" = x"yes" && cc_supports_flag -Werror], + [WERROR="-Werror"], + [ + WERROR="" + AS_CASE([$enable_fatal_warnings], + [$REQUIRED], [AC_MSG_ERROR([Compiler does not support fatal warnings])], + [$OPTIONAL], [enable_fatal_warnings=$DISABLED]) + ]) dnl We use md5.c from gnulib, which has its own m4 macros. Per its docs: dnl "The macro gl_EARLY must be called as soon as possible after verifying that @@ -103,8 +121,15 @@ gl_EARLY gl_SET_CRYPTO_CHECK_DEFAULT([no]) gl_INIT -# --enable-new-dtags: Use RUNPATH instead of RPATH. -# It is necessary to have this done before libtool does linker detection. +AC_CHECK_SIZEOF(long) + + +dnl ============================================== +dnl Linker checks +dnl ============================================== + +# Check whether linker supports --enable-new-dtags to use RUNPATH instead of +# RPATH. It is necessary to do this before libtool does linker detection. # See also: https://github.com/kronosnet/kronosnet/issues/107 AX_CHECK_LINK_FLAG([-Wl,--enable-new-dtags], [AM_LDFLAGS=-Wl,--enable-new-dtags], @@ -117,65 +142,14 @@ LT_INIT([dlopen]) LDFLAGS="$saved_LDFLAGS" LTDL_INIT([convenience]) -AC_TYPE_SIZE_T -AC_CHECK_SIZEOF(char) -AC_CHECK_SIZEOF(short) -AC_CHECK_SIZEOF(int) -AC_CHECK_SIZEOF(long) -AC_CHECK_SIZEOF(long long) -dnl =============================================== -dnl Helpers -dnl =============================================== -cc_supports_flag() { - local CFLAGS="-Werror $@" - AC_MSG_CHECKING([whether $CC supports $@]) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ]], [[ ]])], - [RC=0; AC_MSG_RESULT([yes])], - [RC=1; AC_MSG_RESULT([no])]) - return $RC -} - -# Some tests need to use their own CFLAGS - -cc_temp_flags() { - ac_save_CFLAGS="$CFLAGS" - CFLAGS="$*" -} - -cc_restore_flags() { - CFLAGS=$ac_save_CFLAGS -} - -# expand_path_option $path_variable_name $default -expand_path_option() { - # The first argument is the variable *name* (not value) - ac_path_varname="$1" - - # Get the original value of the variable - ac_path_value=$(eval echo "\${${ac_path_varname}}") - - # Expand any literal variable expressions in the value so that we don't - # end up with something like '${prefix}' in #defines etc. - # - # Autoconf deliberately leaves values unexpanded to allow overriding - # the configure script choices in make commands (for example, - # "make exec_prefix=/foo install"). No longer being able to do this seems - # like no great loss. - eval ac_path_value=$(eval echo "${ac_path_value}") +dnl ============================================== +dnl Define configure options +dnl ============================================== - # Use (expanded) default if necessary - AS_IF([test x"${ac_path_value}" = x""], - [eval ac_path_value=$(eval echo "$2")]) - - # Require a full path - AS_CASE(["$ac_path_value"], - [/*], [eval ${ac_path_varname}="$ac_path_value"], - [*], [AC_MSG_ERROR([$ac_path_varname value "$ac_path_value" is not a full path])] - ) -} - -# yes_no_try $user_response $default +# yes_no_try <user-response> <default> +# Map a yes/no/try user selection to $REQUIRED for yes, $DISABLED for no, and +# $OPTIONAL for try. DISABLED=0 REQUIRED=1 OPTIONAL=2 @@ -190,17 +164,9 @@ yes_no_try() { AC_MSG_ERROR([Invalid option value "$value"]) } -check_systemdsystemunitdir() { - AC_MSG_CHECKING([which system unit file directory to use]) - PKG_CHECK_VAR([systemdsystemunitdir], [systemd], [systemdsystemunitdir]) - AC_MSG_RESULT([${systemdsystemunitdir}]) - test x"$systemdsystemunitdir" != x"" - return $? -} - # -# Fix the defaults of certain built-in variables so they can be used in our -# custom argument defaults +# Fix the defaults of certain built-in variables so they can be used in the +# defaults for our custom arguments # AC_MSG_NOTICE([Sanitizing prefix: ${prefix}]) @@ -234,12 +200,12 @@ AS_CASE([$libdir], AC_MSG_RESULT([$libdir]) ]) -dnl =============================================== -dnl Configure Options -dnl =============================================== +# Start a list of optional features this build supports +PCMK_FEATURES="" -dnl Actual library checks come later, but pkg-config can be used here to grab -dnl external values to use as defaults for configure options +dnl This section should include only the definition of configure script +dnl options and determining their values. Processing should be done later when +dnl possible, other than what's needed to determine values and defaults. dnl Per the autoconf docs, --enable-*/--disable-* options should control dnl features inherent to Pacemaker, while --with-*/--without-* options should @@ -299,13 +265,6 @@ AC_ARG_ENABLE([compat-2.0], ) yes_no_try "$enable_compat_2_0" "no" enable_compat_2_0=$? -AS_IF([test $enable_compat_2_0 -ne $DISABLED], - [ - AC_DEFINE_UNQUOTED([PCMK__COMPAT_2_0], [1], - [Keep certain output compatible with 2.0 release series]) - PCMK_FEATURES="$PCMK_FEATURES compat-2.0" - ] -) # Add an option to create symlinks at the pre-2.0.0 daemon name locations, so # that users and tools can continue to invoke those names directly (e.g., for @@ -316,7 +275,6 @@ AC_ARG_ENABLE([legacy-links], ) yes_no_try "$enable_legacy_links" "no" enable_legacy_links=$? -AM_CONDITIONAL([BUILD_LEGACY_LINKS], [test $enable_legacy_links -ne $DISABLED]) # AM_GNU_GETTEXT calls AM_NLS which defines the nls option, but it defaults # to enabled. We override the definition of AM_NLS to flip the default and mark @@ -330,12 +288,9 @@ AC_DEFUN([AM_NLS], AC_MSG_RESULT([$USE_NLS]) AC_SUBST([USE_NLS])] ) - AM_GNU_GETTEXT([external]) AM_GNU_GETTEXT_VERSION([0.18]) -AS_IF([test x"$enable_nls" = x"yes"], [PCMK_FEATURES="$PCMK_FEATURES nls"]) - dnl --with-* options: external software support, and custom locations dnl This argument is defined via an M4 macro so default can be a variable @@ -348,31 +303,14 @@ AC_DEFUN([VERSION_ARG], ) VERSION_ARG(VERSION_NUMBER) -# Redefine PACKAGE_VERSION and VERSION according to PACEMAKER_VERSION in case -# the user used --with-version. Unfortunately, this can only affect the -# substitution variables and later uses in this file, not the config.h -# constants, so we have to be careful to use only PACEMAKER_VERSION in C code. -PACKAGE_VERSION=$PACEMAKER_VERSION -VERSION=$PACEMAKER_VERSION - -# Detect highest API schema version (use git if available to list managed RNGs, -# in case there are leftover schema files from an earlier build of a different -# version, otherwise check all RNGs) -API_VERSION=$({ git ls-files xml/api/*.rng 2>/dev/null || ls -1 xml/api/*.rng ; } dnl - | sed -n -e 's/^.*-\([[0-9]][[0-9.]]*\).rng$/\1/p' | sort -V | tail -1) -AC_DEFINE_UNQUOTED([PCMK__API_VERSION], ["$API_VERSION"], - [Highest API schema version]) - -# Re-run configure at next make if any RNG changes, to re-detect highest -AC_SUBST([CONFIG_STATUS_DEPENDENCIES], - [$(echo '$(wildcard $(top_srcdir)/xml/api/*.rng)')]) - CRM_DAEMON_USER="" AC_ARG_WITH([daemon-user], [AS_HELP_STRING([--with-daemon-user=USER], [user to run unprivileged Pacemaker daemons as (advanced option: changing this may break other cluster components unless similarly configured) @<:@hacluster@:>@])], [ CRM_DAEMON_USER="$withval" ] ) +AS_IF([test x"${CRM_DAEMON_USER}" = x""], + [CRM_DAEMON_USER="hacluster"]) CRM_DAEMON_GROUP="" AC_ARG_WITH([daemon-group], @@ -380,6 +318,8 @@ AC_ARG_WITH([daemon-group], [group to run unprivileged Pacemaker daemons as (advanced option: changing this may break other cluster components unless similarly configured) @<:@haclient@:>@])], [ CRM_DAEMON_GROUP="$withval" ] ) +AS_IF([test x"${CRM_DAEMON_GROUP}" = x""], + [CRM_DAEMON_GROUP="haclient"]) BUG_URL="" AC_ARG_WITH([bug-url], @@ -388,6 +328,8 @@ AC_ARG_WITH([bug-url], @<:@https://bugs.clusterlabs.org/enter_bug.cgi?product=Pacemaker@:>@]))], [ BUG_URL="$withval" ] ) +AS_IF([test x"${BUG_URL}" = x""], + [BUG_URL="https://bugs.clusterlabs.org/enter_bug.cgi?product=Pacemaker"]) dnl --with-* options: features @@ -422,9 +364,6 @@ AS_CASE([$with_concurrent_fencing_default], [true], [PCMK_FEATURES="$PCMK_FEATURES default-concurrent-fencing"], [AC_MSG_ERROR([Invalid value "$with_concurrent_fencing_default" for --with-concurrent-fencing-default])] ) -AC_DEFINE_UNQUOTED([PCMK__CONCURRENT_FENCING_DEFAULT], - ["$with_concurrent_fencing_default"], - [Default value for concurrent-fencing cluster option]) AC_ARG_WITH([sbd-sync-default], [AS_HELP_STRING([--with-sbd-sync-default], m4_normalize([ @@ -437,9 +376,6 @@ AS_CASE([$with_sbd_sync_default], [true], [PCMK_FEATURES="$PCMK_FEATURES default-sbd-sync"], [AC_MSG_ERROR([Invalid value "$with_sbd_sync_default" for --with-sbd-sync-default])] ) -AC_DEFINE_UNQUOTED([PCMK__SBD_SYNC_DEFAULT], - [$with_sbd_sync_default], - [Default value for SBD_SYNC_RESOURCE_STARTUP environment variable]) AC_ARG_WITH([resource-stickiness-default], [AS_HELP_STRING([--with-resource-stickiness-default], @@ -451,9 +387,6 @@ AS_CASE([$with_resource_stickiness_default], [*[[!0-9]]*], [AC_MSG_ERROR([$errmsg])], [PCMK_FEATURES="$PCMK_FEATURES default-resource-stickiness"] ) -AC_DEFINE_UNQUOTED([PCMK__RESOURCE_STICKINESS_DEFAULT], - [$with_resource_stickiness_default], - [Default value for resource-stickiness resource meta-attribute]) AC_ARG_WITH([corosync], [AS_HELP_STRING([--with-corosync], @@ -462,7 +395,7 @@ AC_ARG_WITH([corosync], yes_no_try "$with_corosync" "try" with_corosync=$? -dnl Get default from corosync if possible. +dnl Get default from Corosync if possible PKG_CHECK_VAR([PCMK__COROSYNC_CONF], [corosync], [corosysconfdir], [PCMK__COROSYNC_CONF="$PCMK__COROSYNC_CONF/corosync.conf"], [PCMK__COROSYNC_CONF="${sysconfdir}/corosync/corosync.conf"]) @@ -553,10 +486,8 @@ AC_ARG_WITH([ocfdir], /usr/lib/ocf@:>@]))], [ OCF_ROOT_DIR="$withval" ] ) -AC_SUBST(OCF_ROOT_DIR) -AC_DEFINE_UNQUOTED([OCF_ROOT_DIR], ["$OCF_ROOT_DIR"], - [OCF root directory for resource agents and libraries]) +dnl Get default from resource-agents if possible PKG_CHECK_VAR([OCF_RA_PATH], [resource-agents], [ocfrapath], [], [OCF_RA_PATH="$OCF_ROOT_DIR/resource.d"]) AC_ARG_WITH([ocfrapath], @@ -566,7 +497,6 @@ AC_ARG_WITH([ocfrapath], OCFDIR/resource.d@:>@]))], [ OCF_RA_PATH="$withval" ] ) -AC_SUBST(OCF_RA_PATH) OCF_RA_INSTALL_DIR="$OCF_ROOT_DIR/resource.d" AC_ARG_WITH([ocfrainstalldir], @@ -575,7 +505,6 @@ AC_ARG_WITH([ocfrainstalldir], @<:@OCFDIR/resource.d@:>@]))], [ OCF_RA_INSTALL_DIR="$withval" ] ) -AC_SUBST(OCF_RA_INSTALL_DIR) dnl Get default from fence-agents if available PKG_CHECK_VAR([FA_PREFIX], [fence-agents], [prefix], @@ -587,7 +516,6 @@ AC_ARG_WITH([fence-bindir], package if available otherwise SBINDIR@:>@]))], [ PCMK__FENCE_BINDIR="$withval" ] ) -AC_SUBST(PCMK__FENCE_BINDIR) dnl --with-* options: non-production testing @@ -620,31 +548,198 @@ AC_ARG_VAR([CFLAGS_HARDENED_EXE], [extra C compiler flags for hardened executabl AC_ARG_VAR([LDFLAGS_HARDENED_EXE], [extra linker flags for hardened executables]) -dnl =============================================== -dnl General Processing -dnl =============================================== +dnl ============================================== +dnl Locate essential tools +dnl ============================================== -AC_DEFINE_UNQUOTED(PACEMAKER_VERSION, "$VERSION", - [Version number of this Pacemaker build]) +PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin" +export PATH -PACKAGE_SERIES=`echo $VERSION | awk -F. '{ print $1"."$2 }'` -AC_SUBST(PACKAGE_SERIES) +dnl Pacemaker's executable python scripts will invoke the python specified by +dnl configure's PYTHON variable. If not specified, AM_PATH_PYTHON will check a +dnl built-in list with (unversioned) "python" having precedence. To configure +dnl Pacemaker to use a specific python interpreter version, define PYTHON +dnl when calling configure, for example: ./configure PYTHON=/usr/bin/python3.6 + +dnl If PYTHON was specified, ensure it is an absolute path +AS_IF([test x"${PYTHON}" != x""], [AC_PATH_PROG([PYTHON], [$PYTHON])]) + +dnl Require a minimum Python version +AM_PATH_PYTHON([3.4]) AC_PROG_LN_S AC_PROG_MKDIR_P -# Check for fatal warning support -AS_IF([test $enable_fatal_warnings -ne $DISABLED && test x"$GCC" = x"yes" && cc_supports_flag -Werror], - [WERROR="-Werror"], +AC_PATH_PROG([GIT], [git], [false]) + +dnl Bash is needed for building man pages and running regression tests. +dnl We set "BASH_PATH" because "BASH" is already an environment variable. +REQUIRE_PROG([BASH_PATH], [bash]) + +AC_PATH_PROGS(VALGRIND_BIN, valgrind, /usr/bin/valgrind) +AC_DEFINE_UNQUOTED(VALGRIND_BIN, "$VALGRIND_BIN", Valgrind command) + + +dnl ============================================== +dnl Package and schema versioning +dnl ============================================== + +# Redefine PACKAGE_VERSION and VERSION according to PACEMAKER_VERSION in case +# the user used --with-version. Unfortunately, this can only affect the +# substitution variables and later uses in this file, not the config.h +# constants, so we have to be careful to use only PACEMAKER_VERSION in C code. +PACKAGE_VERSION=$PACEMAKER_VERSION +VERSION=$PACEMAKER_VERSION + +AC_DEFINE_UNQUOTED(PACEMAKER_VERSION, "$VERSION", + [Version number of this Pacemaker build]) + +AC_MSG_CHECKING([build version]) +AS_IF([test "$GIT" != "false" && test -d .git], [ - WERROR="" - AS_CASE([$enable_fatal_warnings], - [$REQUIRED], [AC_MSG_ERROR([Compiler does not support fatal warnings])], - [$OPTIONAL], [ - AC_MSG_NOTICE([Compiler does not support fatal warnings]) - enable_fatal_warnings=$DISABLED - ]) + BUILD_VERSION=`"$GIT" log --pretty="format:%h" -n 1` + AC_MSG_RESULT([$BUILD_VERSION (git hash)]) + ], + [ + # The current directory name make a reasonable default + # Most generated archives will include the hash or tag + BASE=`basename $PWD` + BUILD_VERSION=`echo $BASE | sed s:.*[[Pp]]acemaker-::` + AC_MSG_RESULT([$BUILD_VERSION (directory name)]) ]) +AC_DEFINE_UNQUOTED(BUILD_VERSION, "$BUILD_VERSION", Build version) +AC_SUBST(BUILD_VERSION) + +# schema_files <schema-dir> +# List all manually edited RNG schemas (as opposed to auto-generated via make) +# in the given directory. Use git if available to list managed RNGs, in case +# there are leftover schema files from an earlier build of a different +# version. Otherwise, check all RNGs. +schema_files() { + local files="$("$GIT" ls-files "$1"/*.rng 2>/dev/null)" + + AS_IF([test x"$files" = x""], + [ + files="$(ls -1 "$1"/*.rng | grep -E -v \ + '/(pacemaker|api-result|crm_mon|versions)[^/]*\.rng')" + ]) + echo "$files" +} + +# latest_schema_version <schema-dir> +# Determine highest RNG version in the given schema directory. +latest_schema_version() { + schema_files "$1" | sed -n -e 's/^.*-\([[0-9]][[0-9.]]*\).rng$/\1/p' dnl + | sort -V | tail -1 +} + +# schemas_for_make <schema-dir> +# Like schema_files, but suitable for use in make variables. +schemas_for_make() { + local file + + for file in $(schema_files "$1"); do + AS_ECHO_N(["\$(top_srcdir)/$file "]) + done +} + +# Detect highest API schema version +API_VERSION=$(latest_schema_version "xml/api") +AC_DEFINE_UNQUOTED([PCMK__API_VERSION], ["$API_VERSION"], + [Highest API schema version]) + +# Detect highest CIB schema version +CIB_VERSION=$(latest_schema_version "xml") +AC_SUBST(CIB_VERSION) + +# Re-run configure at next make if schema files change, to re-detect versions +cib_schemas="$(schemas_for_make "xml")" +api_schemas="$(schemas_for_make "xml/api")" +CONFIG_STATUS_DEPENDENCIES="$cib_schemas $api_schemas" +AC_SUBST(CONFIG_STATUS_DEPENDENCIES) + + +dnl ============================================== +dnl Process simple options +dnl ============================================== + +AS_IF([test $enable_compat_2_0 -ne $DISABLED], + [ + AC_DEFINE_UNQUOTED([PCMK__COMPAT_2_0], [1], + [Keep certain output compatible with 2.0 release series]) + PCMK_FEATURES="$PCMK_FEATURES compat-2.0" + ] +) + +AM_CONDITIONAL([BUILD_LEGACY_LINKS], [test $enable_legacy_links -ne $DISABLED]) + +AS_IF([test x"$enable_nls" = x"yes"], [PCMK_FEATURES="$PCMK_FEATURES nls"]) + +AC_DEFINE_UNQUOTED([PCMK__CONCURRENT_FENCING_DEFAULT], + ["$with_concurrent_fencing_default"], + [Default value for concurrent-fencing cluster option]) + +AC_DEFINE_UNQUOTED([PCMK__SBD_SYNC_DEFAULT], + [$with_sbd_sync_default], + [Default value for SBD_SYNC_RESOURCE_STARTUP environment variable]) + +AC_DEFINE_UNQUOTED([PCMK__RESOURCE_STICKINESS_DEFAULT], + [$with_resource_stickiness_default], + [Default value for resource-stickiness resource meta-attribute]) + +AS_IF([test x"${PCMK_GNUTLS_PRIORITIES}" != x""], [], + [AC_MSG_ERROR([--with-gnutls-priorities value must not be empty])]) +AC_DEFINE_UNQUOTED([PCMK_GNUTLS_PRIORITIES], ["$PCMK_GNUTLS_PRIORITIES"], + [GnuTLS cipher priorities]) +AC_SUBST(PCMK_GNUTLS_PRIORITIES) + +AC_SUBST(BUG_URL) +AC_DEFINE_UNQUOTED([PCMK__BUG_URL], ["$BUG_URL"], + [Where bugs should be reported]) + +AC_DEFINE_UNQUOTED([CRM_DAEMON_USER], ["$CRM_DAEMON_USER"], + [User to run Pacemaker daemons as]) +AC_SUBST(CRM_DAEMON_USER) + +AC_DEFINE_UNQUOTED([CRM_DAEMON_GROUP], ["$CRM_DAEMON_GROUP"], + [Group to run Pacemaker daemons as]) +AC_SUBST(CRM_DAEMON_GROUP) + + +dnl ============================================== +dnl Process file paths +dnl ============================================== + +# expand_path_option <path-variable-name> [<default>] +# Given the name of a file path variable, expand any variable references +# inside it, use the specified default if it is not specified, and ensure it +# is a full path. +expand_path_option() { + # The first argument is the variable *name* (not value) + ac_path_varname="$1" + + # Get the original value of the variable + ac_path_value=$(eval echo "\${${ac_path_varname}}") + + # Expand any literal variable expressions in the value so that we don't + # end up with something like '${prefix}' in #defines etc. + # + # Autoconf deliberately leaves values unexpanded to allow overriding + # the configure script choices in make commands (for example, + # "make exec_prefix=/foo install"). No longer being able to do this seems + # like no great loss. + eval ac_path_value=$(eval echo "${ac_path_value}") + + # Use (expanded) default if necessary + AS_IF([test x"${ac_path_value}" = x""], + [eval ac_path_value=$(eval echo "$2")]) + + # Require a full path + AS_CASE(["$ac_path_value"], + [/*], [eval ${ac_path_varname}="$ac_path_value"], + [*], [AC_MSG_ERROR([$ac_path_varname value "$ac_path_value" is not a full path])] + ) +} AC_MSG_NOTICE([Sanitizing INITDIR: ${INITDIR}]) AS_CASE([$INITDIR], @@ -670,6 +765,7 @@ expand_path_option exec_prefix expand_path_option bindir expand_path_option sbindir expand_path_option libexecdir +expand_path_option datarootdir expand_path_option datadir expand_path_option sysconfdir expand_path_option sharedstatedir @@ -680,10 +776,13 @@ expand_path_option oldincludedir expand_path_option infodir expand_path_option mandir -dnl Home-grown variables +AC_DEFUN([AC_DATAROOTDIR_CHECKED]) + +dnl Expand values of custom directory options expand_path_option localedir "${datadir}/locale" -AC_DEFINE_UNQUOTED([PCMK__LOCALE_DIR],["$localedir"], [Base directory for message catalogs]) +AC_DEFINE_UNQUOTED([PCMK__LOCALE_DIR],["$localedir"], + [Base directory for message catalogs]) AS_IF([test x"${runstatedir}" = x""], [runstatedir="${pcmk_runstatedir}"]) expand_path_option runstatedir "${localstatedir}/run" @@ -705,33 +804,88 @@ expand_path_option PCMK__COROSYNC_CONF "${sysconfdir}/corosync/corosync.conf" AC_SUBST(PCMK__COROSYNC_CONF) expand_path_option CRM_LOG_DIR "${localstatedir}/log/pacemaker" -AC_DEFINE_UNQUOTED(CRM_LOG_DIR,"$CRM_LOG_DIR", Location for Pacemaker log file) +AC_DEFINE_UNQUOTED([CRM_LOG_DIR], ["$CRM_LOG_DIR"], + [Location for Pacemaker log file]) AC_SUBST(CRM_LOG_DIR) expand_path_option CRM_BUNDLE_DIR "${localstatedir}/log/pacemaker/bundles" -AC_DEFINE_UNQUOTED(CRM_BUNDLE_DIR,"$CRM_BUNDLE_DIR", Location for Pacemaker bundle logs) +AC_DEFINE_UNQUOTED([CRM_BUNDLE_DIR], ["$CRM_BUNDLE_DIR"], + [Location for Pacemaker bundle logs]) AC_SUBST(CRM_BUNDLE_DIR) expand_path_option PCMK__FENCE_BINDIR -AC_DEFINE_UNQUOTED(PCMK__FENCE_BINDIR,"$PCMK__FENCE_BINDIR", +AC_SUBST(PCMK__FENCE_BINDIR) +AC_DEFINE_UNQUOTED([PCMK__FENCE_BINDIR], ["$PCMK__FENCE_BINDIR"], [Location for executable fence agents]) +expand_path_option OCF_ROOT_DIR +AC_SUBST(OCF_ROOT_DIR) +AC_DEFINE_UNQUOTED([OCF_ROOT_DIR], ["$OCF_ROOT_DIR"], + [OCF root directory for resource agents and libraries]) + expand_path_option OCF_RA_PATH +AC_SUBST(OCF_RA_PATH) AC_DEFINE_UNQUOTED([OCF_RA_PATH], ["$OCF_RA_PATH"], [OCF directories to search for resource agents ]) -AS_IF([test x"${PCMK_GNUTLS_PRIORITIES}" != x""], [], - [AC_MSG_ERROR([--with-gnutls-priorities value must not be empty])]) -AC_DEFINE_UNQUOTED([PCMK_GNUTLS_PRIORITIES], ["$PCMK_GNUTLS_PRIORITIES"], - [GnuTLS cipher priorities]) -AC_SUBST(PCMK_GNUTLS_PRIORITIES) +expand_path_option OCF_RA_INSTALL_DIR +AC_SUBST(OCF_RA_INSTALL_DIR) -AS_IF([test x"${BUG_URL}" = x""], - [BUG_URL="https://bugs.clusterlabs.org/enter_bug.cgi?product=Pacemaker"]) -AC_SUBST(BUG_URL) -AC_DEFINE_UNQUOTED([PCMK__BUG_URL], ["$BUG_URL"], - [Where bugs should be reported]) +# Derived paths + +CRM_SCHEMA_DIRECTORY="${datadir}/pacemaker" +AC_DEFINE_UNQUOTED([CRM_SCHEMA_DIRECTORY], ["$CRM_SCHEMA_DIRECTORY"], + [Location for the Pacemaker Relax-NG Schema]) +AC_SUBST(CRM_SCHEMA_DIRECTORY) +CRM_CORE_DIR="${localstatedir}/lib/pacemaker/cores" +AC_DEFINE_UNQUOTED([CRM_CORE_DIR], ["$CRM_CORE_DIR"], + [Directory Pacemaker daemons should change to (without systemd, core files will go here)]) +AC_SUBST(CRM_CORE_DIR) + +CRM_PACEMAKER_DIR="${localstatedir}/lib/pacemaker" +AC_DEFINE_UNQUOTED([CRM_PACEMAKER_DIR], ["$CRM_PACEMAKER_DIR"], + [Location to store directory produced by Pacemaker daemons]) +AC_SUBST(CRM_PACEMAKER_DIR) + +CRM_BLACKBOX_DIR="${localstatedir}/lib/pacemaker/blackbox" +AC_DEFINE_UNQUOTED([CRM_BLACKBOX_DIR], ["$CRM_BLACKBOX_DIR"], + [Where to keep blackbox dumps]) +AC_SUBST(CRM_BLACKBOX_DIR) + +PE_STATE_DIR="${localstatedir}/lib/pacemaker/pengine" +AC_DEFINE_UNQUOTED([PE_STATE_DIR], ["$PE_STATE_DIR"], + [Where to keep scheduler outputs]) +AC_SUBST(PE_STATE_DIR) + +CRM_CONFIG_DIR="${localstatedir}/lib/pacemaker/cib" +AC_DEFINE_UNQUOTED([CRM_CONFIG_DIR], ["$CRM_CONFIG_DIR"], + [Where to keep configuration files]) +AC_SUBST(CRM_CONFIG_DIR) + +CRM_DAEMON_DIR="${libexecdir}/pacemaker" +AC_DEFINE_UNQUOTED([CRM_DAEMON_DIR], ["$CRM_DAEMON_DIR"], + [Location for Pacemaker daemons]) +AC_SUBST(CRM_DAEMON_DIR) + +CRM_STATE_DIR="${runstatedir}/crm" +AC_DEFINE_UNQUOTED([CRM_STATE_DIR], ["$CRM_STATE_DIR"], + [Where to keep state files and sockets]) +AC_SUBST(CRM_STATE_DIR) + +CRM_RSCTMP_DIR="${runstatedir}/resource-agents" +AC_DEFINE_UNQUOTED([CRM_RSCTMP_DIR], ["$CRM_RSCTMP_DIR"], + [Where resource agents should keep state files]) +AC_SUBST(CRM_RSCTMP_DIR) + +PACEMAKER_CONFIG_DIR="${sysconfdir}/pacemaker" +AC_DEFINE_UNQUOTED([PACEMAKER_CONFIG_DIR], ["$PACEMAKER_CONFIG_DIR"], + [Where to keep configuration files like authkey]) +AC_SUBST(PACEMAKER_CONFIG_DIR) + +AC_DEFINE_UNQUOTED([SBIN_DIR], ["$sbindir"], [Location for system binaries]) + +# Warn about any directories that don't exist (which may be OK) for j in prefix exec_prefix bindir sbindir libexecdir datadir sysconfdir \ sharedstatedir localstatedir libdir includedir oldincludedir infodir \ mandir INITDIR docdir CONFIGDIR localedir @@ -741,6 +895,10 @@ do [AC_MSG_WARN([$j directory ($dirname) does not exist (yet)])]) done +dnl =============================================== +dnl General Processing +dnl =============================================== + us_auth= AC_CHECK_HEADER([sys/socket.h], [ AC_CHECK_DECL([SO_PEERCRED], [ @@ -786,6 +944,10 @@ AS_IF([test -z "${us_auth}"], [ dnl OS-based decision-making is poor autotools practice; feature-based dnl mechanisms are strongly preferred. Keep this section to a bare minimum; dnl regard as a "necessary evil". + +dnl Set host_os and host_cpu +AC_CANONICAL_HOST + INIT_EXT="" PROCFS=0 dnl Solaris and some *BSD versions support procfs but not files we need @@ -810,24 +972,10 @@ AS_CASE(["$host_cpu"], ]) ]) -dnl =============================================== -dnl Program Paths -dnl =============================================== - -PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin" -export PATH - -dnl Pacemaker's executable python scripts will invoke the python specified by -dnl configure's PYTHON variable. If not specified, AM_PATH_PYTHON will check a -dnl built-in list with (unversioned) "python" having precedence. To configure -dnl Pacemaker to use a specific python interpreter version, define PYTHON -dnl when calling configure, for example: ./configure PYTHON=/usr/bin/python3.6 - -dnl Ensure PYTHON is an absolute path -AS_IF([test x"${PYTHON}" != x""], [AC_PATH_PROG([PYTHON], [$PYTHON])]) -dnl Require a minimum Python version -AM_PATH_PYTHON([3.4]) +dnl ============================================== +dnl Documentation build dependencies and checks +dnl ============================================== AC_PATH_PROGS([ASCIIDOC_CONV], [asciidoc asciidoctor]) AC_PATH_PROG([HELP2MAN], [help2man]) @@ -836,15 +984,6 @@ AC_PATH_PROG([INKSCAPE], [inkscape]) AC_PATH_PROG([XSLTPROC], [xsltproc]) AC_PATH_PROG([XMLCATALOG], [xmlcatalog]) -dnl Bash is needed for building man pages and running regression tests. -dnl BASH is already an environment variable, so use something else. -AC_PATH_PROG([BASH_PATH], [bash]) -AS_IF([test x"${BASH_PATH}" != x""], [], - [AC_MSG_FAILURE([Could not find required build tool bash])]) - -AC_PATH_PROGS(VALGRIND_BIN, valgrind, /usr/bin/valgrind) -AC_DEFINE_UNQUOTED(VALGRIND_BIN, "$VALGRIND_BIN", Valgrind command) - AM_CONDITIONAL(BUILD_HELP, test x"${HELP2MAN}" != x"") AS_IF([test x"${HELP2MAN}" != x""], [PCMK_FEATURES="$PCMK_FEATURES generated-manpages"]) @@ -913,28 +1052,6 @@ AS_IF([test -n "$GETOPT_PATH"], [AC_MSG_RESULT([$GETOPT_PATH])], ]) AC_SUBST([GETOPT_PATH]) -dnl ======================================================================== -dnl checks for library functions to replace them -dnl -dnl NoSuchFunctionName: -dnl is a dummy function which no system supplies. It is here to make -dnl the system compile semi-correctly on OpenBSD which doesn't know -dnl how to create an empty archive -dnl -dnl scandir: Only on BSD. -dnl System-V systems may have it, but hidden and/or deprecated. -dnl A replacement function is supplied for it. -dnl -dnl strerror: returns a string that corresponds to an errno. -dnl A replacement function is supplied for it. -dnl -dnl strnlen: is a gnu function similar to strlen, but safer. -dnl We wrote a tolerably-fast replacement function for it. -dnl -dnl strndup: is a gnu function similar to strdup, but safer. -dnl We wrote a tolerably-fast replacement function for it. - -AC_REPLACE_FUNCS(alphasort NoSuchFunctionName scandir strerror strchrnul strnlen strndup) dnl =============================================== dnl Libraries @@ -973,12 +1090,24 @@ AS_IF([test x"$ac_cv_lib_c_dlopen" = x"yes"], [LIBADD_DL=-ldl], [LIBADD_DL=${lt_cv_dlopen_libs}]) -PKG_CHECK_MODULES(LIBXML2, [libxml-2.0], +PKG_CHECK_MODULES(LIBXML2, [libxml-2.0 >= 2.6.0], [CPPFLAGS="${CPPFLAGS} ${LIBXML2_CFLAGS}" LIBS="${LIBS} ${LIBXML2_LIBS}"]) REQUIRE_LIB([xslt], [xsltApplyStylesheet]) +AC_MSG_CHECKING([whether __progname and __progname_full are available]) +AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern char *__progname, *__progname_full;]], + [[__progname = "foo"; + __progname_full = "foo bar";]])], + [ + have_progname="yes" + AC_DEFINE(HAVE_PROGNAME, 1, + [Define to 1 if processes can change their name]) + ], + [have_progname="no"]) +AC_MSG_RESULT([$have_progname]) + dnl ======================================================================== dnl Headers dnl ======================================================================== @@ -1000,18 +1129,30 @@ AC_CHECK_HEADERS([security/pam_appl.h pam/pam_appl.h]) REQUIRE_HEADER([arpa/inet.h]) REQUIRE_HEADER([ctype.h]) REQUIRE_HEADER([dirent.h]) +REQUIRE_HEADER([dlfcn.h]) REQUIRE_HEADER([errno.h]) +REQUIRE_HEADER([fcntl.h]) +REQUIRE_HEADER([float.h]) REQUIRE_HEADER([glib.h]) REQUIRE_HEADER([grp.h]) +REQUIRE_HEADER([inttypes.h]) +REQUIRE_HEADER([libgen.h]) REQUIRE_HEADER([limits.h]) +REQUIRE_HEADER([locale.h]) REQUIRE_HEADER([netdb.h]) REQUIRE_HEADER([netinet/in.h]) REQUIRE_HEADER([netinet/ip.h], [ #include <sys/types.h> #include <netinet/in.h> ]) +REQUIRE_HEADER([netinet/tcp.h]) REQUIRE_HEADER([pwd.h]) +REQUIRE_HEADER([regex.h]) +REQUIRE_HEADER([sched.h]) REQUIRE_HEADER([signal.h]) +REQUIRE_HEADER([stdarg.h]) +REQUIRE_HEADER([stdbool.h]) +REQUIRE_HEADER([stdint.h]) REQUIRE_HEADER([stdio.h]) REQUIRE_HEADER([stdlib.h]) REQUIRE_HEADER([string.h]) @@ -1024,8 +1165,10 @@ REQUIRE_HEADER([sys/socket.h]) REQUIRE_HEADER([sys/stat.h]) REQUIRE_HEADER([sys/time.h]) REQUIRE_HEADER([sys/types.h]) +REQUIRE_HEADER([sys/uio.h]) REQUIRE_HEADER([sys/utsname.h]) REQUIRE_HEADER([sys/wait.h]) +REQUIRE_HEADER([termios.h]) REQUIRE_HEADER([time.h]) REQUIRE_HEADER([unistd.h]) REQUIRE_HEADER([libxml/xpath.h]) @@ -1033,21 +1176,6 @@ REQUIRE_HEADER([libxslt/xslt.h]) cc_restore_flags -AC_CHECK_FUNCS([uuid_unparse], [], - [AC_MSG_FAILURE([Could not find required C function uuid_unparse()])]) - -AC_CACHE_CHECK([whether __progname and __progname_full are available], - [pf_cv_var_progname], - [AC_LINK_IFELSE( - [AC_LANG_PROGRAM([[extern char *__progname, *__progname_full;]], - [[__progname = "foo"; __progname_full = "foo bar";]])], - [pf_cv_var_progname="yes"], - [pf_cv_var_progname="no"] - )] - ) -AS_IF([test x"$pf_cv_var_progname" = x"yes"], - [AC_DEFINE(HAVE_PROGNAME,1,[Define to 1 if processes can change their name])]) - dnl ======================================================================== dnl Generic declarations dnl ======================================================================== @@ -1101,25 +1229,42 @@ dnl ======================================================================== dnl Functions dnl ======================================================================== +REQUIRE_FUNC([alphasort]) REQUIRE_FUNC([getopt]) +REQUIRE_FUNC([scandir]) REQUIRE_FUNC([setenv]) +REQUIRE_FUNC([strndup]) +REQUIRE_FUNC([strnlen]) REQUIRE_FUNC([unsetenv]) +REQUIRE_FUNC([uuid_unparse]) REQUIRE_FUNC([vasprintf]) -AC_CACHE_CHECK(whether sscanf supports %m, - pf_cv_var_sscanf, - AC_RUN_IFELSE([AC_LANG_SOURCE([[ -#include <stdio.h> -const char *s = "some-command-line-arg"; -int main(int argc, char **argv) { -char *name = NULL; -int n = sscanf(s, "%ms", &name); -return n == 1 ? 0 : 1; -} -]])], - pf_cv_var_sscanf="yes", pf_cv_var_sscanf="no", pf_cv_var_sscanf="no")) - -AS_IF([test x"$pf_cv_var_sscanf" = x"yes"], +AC_CHECK_FUNCS([strchrnul]) + +AC_CHECK_FUNCS([fopen64]) +AM_CONDITIONAL([WRAPPABLE_FOPEN64], [test x"$ac_cv_func_fopen64" = x"yes"]) + +AC_MSG_CHECKING([whether strerror always returns non-NULL]) +AC_RUN_IFELSE([AC_LANG_PROGRAM([[ + #include <stdio.h> + #include <string.h> + ]], [[ + return strerror(-1) == NULL; + ]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_ERROR([strerror() is not C99-compliant])], + [AC_MSG_ERROR([strerror() is not C99-compliant])]) + +AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[ + const char *s = "some-command-line-arg"; + char *name = NULL; + int n = sscanf(s, "%ms", &name); + return n != 1; + ]])], + [have_sscanf_m="yes"], + [have_sscanf_m="no"], + [have_sscanf_m="no"]) +AS_IF([test x"$have_sscanf_m" = x"yes"], [AC_DEFINE([HAVE_SSCANF_M], [1], [Define to 1 if sscanf %m modifier is available])]) @@ -1308,84 +1453,10 @@ AC_CHECK_HEADERS([stonith/stonith.h], ]) AM_CONDITIONAL([BUILD_LHA_SUPPORT], [test x"$ac_cv_header_stonith_stonith_h" = x"yes"]) + dnl =============================================== -dnl Variables needed for substitution +dnl Detect DBus, systemd, and Upstart support dnl =============================================== -CRM_SCHEMA_DIRECTORY="${datadir}/pacemaker" -AC_DEFINE_UNQUOTED(CRM_SCHEMA_DIRECTORY,"$CRM_SCHEMA_DIRECTORY", Location for the Pacemaker Relax-NG Schema) -AC_SUBST(CRM_SCHEMA_DIRECTORY) - -CRM_CORE_DIR="${localstatedir}/lib/pacemaker/cores" -AC_DEFINE_UNQUOTED([CRM_CORE_DIR], ["$CRM_CORE_DIR"], - [Directory Pacemaker daemons should change to (without systemd, core files will go here)]) -AC_SUBST(CRM_CORE_DIR) - -AS_IF([test x"${CRM_DAEMON_USER}" = x""], - [CRM_DAEMON_USER="hacluster"]) -AC_DEFINE_UNQUOTED(CRM_DAEMON_USER,"$CRM_DAEMON_USER", User to run Pacemaker daemons as) -AC_SUBST(CRM_DAEMON_USER) - -AS_IF([test x"${CRM_DAEMON_GROUP}" = x""], - [CRM_DAEMON_GROUP="haclient"]) -AC_DEFINE_UNQUOTED(CRM_DAEMON_GROUP,"$CRM_DAEMON_GROUP", Group to run Pacemaker daemons as) -AC_SUBST(CRM_DAEMON_GROUP) - -CRM_PACEMAKER_DIR=${localstatedir}/lib/pacemaker -AC_DEFINE_UNQUOTED(CRM_PACEMAKER_DIR,"$CRM_PACEMAKER_DIR", Location to store directory produced by Pacemaker daemons) -AC_SUBST(CRM_PACEMAKER_DIR) - -CRM_BLACKBOX_DIR=${localstatedir}/lib/pacemaker/blackbox -AC_DEFINE_UNQUOTED(CRM_BLACKBOX_DIR,"$CRM_BLACKBOX_DIR", Where to keep blackbox dumps) -AC_SUBST(CRM_BLACKBOX_DIR) - -PE_STATE_DIR="${localstatedir}/lib/pacemaker/pengine" -AC_DEFINE_UNQUOTED(PE_STATE_DIR,"$PE_STATE_DIR", Where to keep scheduler outputs) -AC_SUBST(PE_STATE_DIR) - -CRM_CONFIG_DIR="${localstatedir}/lib/pacemaker/cib" -AC_DEFINE_UNQUOTED(CRM_CONFIG_DIR,"$CRM_CONFIG_DIR", Where to keep configuration files) -AC_SUBST(CRM_CONFIG_DIR) - -CRM_DAEMON_DIR="${libexecdir}/pacemaker" -AC_DEFINE_UNQUOTED(CRM_DAEMON_DIR,"$CRM_DAEMON_DIR", Location for Pacemaker daemons) -AC_SUBST(CRM_DAEMON_DIR) - -CRM_STATE_DIR="${runstatedir}/crm" -AC_DEFINE_UNQUOTED([CRM_STATE_DIR], ["$CRM_STATE_DIR"], - [Where to keep state files and sockets]) -AC_SUBST(CRM_STATE_DIR) - -CRM_RSCTMP_DIR="${runstatedir}/resource-agents" -AC_DEFINE_UNQUOTED(CRM_RSCTMP_DIR,"$CRM_RSCTMP_DIR", Where resource agents should keep state files) -AC_SUBST(CRM_RSCTMP_DIR) - -PACEMAKER_CONFIG_DIR="${sysconfdir}/pacemaker" -AC_DEFINE_UNQUOTED(PACEMAKER_CONFIG_DIR,"$PACEMAKER_CONFIG_DIR", Where to keep configuration files like authkey) -AC_SUBST(PACEMAKER_CONFIG_DIR) - -AC_DEFINE_UNQUOTED(SBIN_DIR,"$sbindir",[Location for system binaries]) - -AC_PATH_PROGS(GIT, git false) - -AC_MSG_CHECKING([build version]) -BUILD_VERSION=6fdc9deea29 -AS_IF([test $BUILD_VERSION != ":%h$"], - [AC_MSG_RESULT([$BUILD_VERSION (archive hash)])], - [test -x $GIT && test -d .git], - [ - BUILD_VERSION=`$GIT log --pretty="format:%h" -n 1` - AC_MSG_RESULT([$BUILD_VERSION (git hash)]) - ], - [ - # The current directory name make a reasonable default - # Most generated archives will include the hash or tag - BASE=`basename $PWD` - BUILD_VERSION=`echo $BASE | sed s:.*[[Pp]]acemaker-::` - AC_MSG_RESULT([$BUILD_VERSION (directory name)]) - ]) - -AC_DEFINE_UNQUOTED(BUILD_VERSION, "$BUILD_VERSION", Build version) -AC_SUBST(BUILD_VERSION) HAVE_dbus=1 PKG_CHECK_MODULES([DBUS], [dbus-1], @@ -1400,6 +1471,14 @@ AS_IF([test $HAVE_dbus = 0], [PC_NAME_DBUS="dbus-1"]) AC_SUBST(PC_NAME_DBUS) +check_systemdsystemunitdir() { + AC_MSG_CHECKING([which system unit file directory to use]) + PKG_CHECK_VAR([systemdsystemunitdir], [systemd], [systemdsystemunitdir]) + AC_MSG_RESULT([${systemdsystemunitdir}]) + test x"$systemdsystemunitdir" != x"" + return $? +} + AS_CASE([$enable_systemd], [$REQUIRED], [ AS_IF([test $HAVE_dbus = 0], @@ -1489,6 +1568,11 @@ AC_DEFINE_UNQUOTED([SUPPORT_UPSTART], [$enable_upstart], AM_CONDITIONAL([BUILD_UPSTART], [test $enable_upstart -eq $REQUIRED]) AC_SUBST(SUPPORT_UPSTART) + +dnl ======================================================================== +dnl Detect Nagios support +dnl ======================================================================== + AS_CASE([$with_nagios], [$REQUIRED], [ AS_IF([test x"$ac_cv_have_decl_CLOCK_MONOTONIC" = x"no"], @@ -1977,19 +2061,17 @@ CONFIG_FILES_EXEC([agents/ocf/ClusterMon], [agents/ocf/remote], [agents/stonith/fence_legacy], [agents/stonith/fence_watchdog], + [cts/cluster_test], + [cts/cts], [cts/cts-attrd], [cts/cts-cli], [cts/cts-exec], [cts/cts-fencing], + [cts/cts-lab], + [cts/cts-log-watcher], [cts/cts-regression], [cts/cts-scheduler], - [cts/lxc_autogen.sh], [cts/benchmark/clubench], - [cts/lab/CTSlab.py], - [cts/lab/OCFIPraTest.py], - [cts/lab/cluster_test], - [cts/lab/cts], - [cts/lab/cts-log-watcher], [cts/support/LSBDummy], [cts/support/cts-support], [cts/support/fence_dummy], @@ -1998,13 +2080,13 @@ CONFIG_FILES_EXEC([agents/ocf/ClusterMon], [maint/bumplibs], [tools/cluster-clean], [tools/cluster-helper], - [tools/cluster-init], [tools/crm_failcount], [tools/crm_master], [tools/crm_report], [tools/crm_standby], [tools/cibsecret], - [tools/pcmk_simtimes]) + [tools/pcmk_simtimes], + [xml/version-diff.sh]) dnl Other files we output AC_CONFIG_FILES(Makefile \ @@ -2014,7 +2096,6 @@ AC_CONFIG_FILES(Makefile \ agents/stonith/Makefile \ cts/Makefile \ cts/benchmark/Makefile \ - cts/lab/Makefile \ cts/scheduler/Makefile \ cts/scheduler/dot/Makefile \ cts/scheduler/exp/Makefile \ @@ -2059,6 +2140,7 @@ AC_CONFIG_FILES(Makefile \ lib/common/Makefile \ lib/common/tests/Makefile \ lib/common/tests/acl/Makefile \ + lib/common/tests/actions/Makefile \ lib/common/tests/agents/Makefile \ lib/common/tests/cmdline/Makefile \ lib/common/tests/flags/Makefile \ @@ -2067,7 +2149,6 @@ AC_CONFIG_FILES(Makefile \ lib/common/tests/iso8601/Makefile \ lib/common/tests/lists/Makefile \ lib/common/tests/nvpair/Makefile \ - lib/common/tests/operations/Makefile \ lib/common/tests/options/Makefile \ lib/common/tests/output/Makefile \ lib/common/tests/procfs/Makefile \ @@ -2104,9 +2185,9 @@ AC_CONFIG_FILES(Makefile \ python/setup.py \ python/pacemaker/Makefile \ python/pacemaker/_cts/Makefile \ + python/pacemaker/_cts/tests/Makefile \ python/pacemaker/buildoptions.py \ python/tests/Makefile \ - replace/Makefile \ rpm/Makefile \ tests/Makefile \ tools/Makefile \ |