2013-12-22 04:41:30 +04:00
AC_PREREQ([2.63])
2020-06-19 21:09:42 +03:00
dnl
dnl SEE RELEASE.md FOR INSTRUCTIONS ON HOW TO DO A RELEASE.
dnl
2021-01-18 22:24:46 +03:00
m4_define([year_version], [2021])
2021-01-18 22:48:40 +03:00
m4_define([release_version], [1])
2017-07-21 20:32:58 +03:00
m4_define([package_version], [year_version.release_version])
2021-01-11 21:28:19 +03:00
AC_INIT([rpm-ostree], [package_version], [coreos@lists.fedoraproject.org])
2013-12-22 04:41:30 +04:00
AC_CONFIG_HEADER([config.h])
2014-12-18 02:11:47 +03:00
AC_CONFIG_MACRO_DIR([buildutil])
2013-12-22 04:41:30 +04:00
AC_CONFIG_AUX_DIR([build-aux])
2017-07-21 20:32:58 +03:00
dnl Versioning information
AC_SUBST([YEAR_VERSION], [year_version])
AC_SUBST([RELEASE_VERSION], [release_version])
AC_SUBST([PACKAGE_VERSION], [package_version])
2013-12-22 04:41:30 +04:00
2015-09-11 16:33:46 +03:00
AM_INIT_AUTOMAKE([1.11 -Wno-portability foreign no-define tar-ustar no-dist-gzip dist-xz subdir-objects])
2013-12-22 04:41:30 +04:00
AM_MAINTAINER_MODE([enable])
AM_SILENT_RULES([yes])
AC_USE_SYSTEM_EXTENSIONS
AC_SYS_LARGEFILE
AC_PROG_CC
2018-09-27 00:32:10 +03:00
dnl we don't today use C++ in rpm-ostree, only in libdnf,
dnl but this has the side effect of setting CXXFLAGS with -g
dnl if not set, which we definitely want; cmake doesn't do that.
AC_PROG_CXX
2013-12-22 04:41:30 +04:00
AM_PROG_CC_C_O
2016-12-07 23:30:22 +03:00
dnl Keep this in sync with the version in ostree
2017-12-15 17:52:48 +03:00
AS_IF([echo "$CFLAGS" | grep -q -E -e '-Werror($| )'], [], [
2016-08-06 16:28:43 +03:00
CC_CHECK_FLAGS_APPEND([WARN_CFLAGS], [CFLAGS], [\
2017-12-15 17:52:48 +03:00
-pipe \
-Werror=empty-body \
"-Werror=format=2 -Werror=format-security -Werror=format-nonliteral" \
-Werror=pointer-arith -Werror=init-self \
-Werror=missing-declarations \
-Werror=return-type \
-Werror=switch \
-Werror=overflow \
-Werror=parenthesis \
-Werror=undef \
-Werror=misleading-indentation \
2020-12-11 04:21:33 +03:00
-Werror=missing-include-dirs \
2017-12-15 17:52:48 +03:00
-Wstrict-aliasing=2 \
-Werror=unused-result \
])])
2013-12-22 04:41:30 +04:00
AC_SUBST(WARN_CFLAGS)
2017-01-17 21:29:48 +03:00
AC_MSG_CHECKING([for -fsanitize=address in CFLAGS])
if echo $CFLAGS | grep -q -e -fsanitize=address; then
AC_MSG_RESULT([yes])
using_asan=yes
else
AC_MSG_RESULT([no])
fi
AM_CONDITIONAL(BUILDOPT_ASAN, [test x$using_asan = xyes])
2013-12-22 04:41:30 +04:00
# Initialize libtool
LT_PREREQ([2.2.4])
LT_INIT([disable-static])
2014-11-26 14:02:19 +03:00
RPM_OSTREE_FEATURES=""
AC_SUBST([RPM_OSTREE_FEATURES])
2013-12-22 04:41:30 +04:00
PKG_PROG_PKG_CONFIG
2015-08-14 19:22:45 +03:00
# Remember to update AM_CPPFLAGS in Makefile.am when bumping GIO req.
2013-12-22 04:41:30 +04:00
PKG_CHECK_MODULES(PKGDEP_GIO_UNIX, [gio-unix-2.0])
2021-01-26 14:34:59 +03:00
# librepo libsolv etc. are libdnf dependencies
2017-12-15 17:50:43 +03:00
PKG_CHECK_MODULES(PKGDEP_RPMOSTREE, [gio-unix-2.0 >= 2.50.0 json-glib-1.0
2020-07-25 00:35:01 +03:00
ostree-1 >= 2020.7
2016-06-17 22:14:24 +03:00
libsystemd
2017-06-09 13:52:01 +03:00
polkit-gobject-1
2021-01-26 14:34:59 +03:00
rpm librepo libsolv libsolvext sqlite3 gpgme modulemd-2.0 json-c libcurl openssl
2016-01-12 19:22:16 +03:00
libarchive])
2018-08-18 00:34:02 +03:00
# We just keep rust-specific deps separate for better tracking
# The `libcurl` one is redundant since we already require it for libostree. `openssl`
# is required by libcurl anyway, but we need to link to it directly too because
# curl-rust uses it.
PKG_CHECK_MODULES(PKGDEP_RPMOSTREE_RS, [libcurl openssl])
2019-10-15 18:16:06 +03:00
dnl RHEL8.1 has old libarchive
AS_IF([pkg-config --atleast-version=3.3.3 libarchive],
[AC_DEFINE([HAVE_LIBARCHIVE_ZSTD], 1, [Define if we have libarchive with zstd])])
2017-07-07 17:45:10 +03:00
dnl This is the current version in Fedora 25.
2019-03-21 05:54:52 +03:00
AS_IF([pkg-config --atleast-version=4.14.2 rpm], [], [AC_MSG_ERROR([librpm 4.14.2 required])])
2017-07-07 17:45:10 +03:00
2019-10-17 00:02:45 +03:00
dnl We don't *actually* use this ourself, but librepo does, and libdnf gets confused
dnl if librepo doesn't support it.
2020-05-14 03:38:48 +03:00
have_zchunk=no
2019-10-17 00:02:45 +03:00
AS_IF([pkg-config --exists zck],
2020-05-14 03:38:48 +03:00
[have_zchunk=yes; AC_DEFINE([HAVE_ZCHUNK], 1, [Define if we have zchunk])])
2019-10-17 00:02:45 +03:00
2013-12-22 04:41:30 +04:00
AC_PATH_PROG([XSLTPROC], [xsltproc])
2014-12-18 02:11:47 +03:00
GLIB_TESTS
2017-12-15 17:44:33 +03:00
LIBGLNX_CONFIGURE
2014-12-18 02:11:47 +03:00
2015-03-20 03:45:30 +03:00
m4_ifdef([GOBJECT_INTROSPECTION_CHECK], [
GOBJECT_INTROSPECTION_CHECK([1.34.0])
])
AM_CONDITIONAL(BUILDOPT_INTROSPECTION, test "x$found_introspection" = xyes)
2014-01-03 22:15:12 +04:00
2016-03-15 21:03:32 +03:00
m4_ifdef([GTK_DOC_CHECK], [
2015-04-09 00:20:50 +03:00
GTK_DOC_CHECK([1.15], [--flavour no-tmpl])
2016-03-15 21:03:32 +03:00
],[
AM_CONDITIONAL([ENABLE_GTK_DOC],[false])
])
2015-04-09 00:20:50 +03:00
2020-12-22 01:27:52 +03:00
AC_ARG_ENABLE(sqlite_rpmdb_default,
AS_HELP_STRING([--enable-sqlite-rpmdb-default],
[Default to sqlite rpmdb backend (default: no)]),,
[enable_sqlite_rpmdb_default=no])
AM_CONDITIONAL(BUILDOPT_ENABLE_SQLITE_RPMDB_DEFAULT, test x$enable_sqlite_rpmdb_default = xyes)
2019-03-21 05:56:47 +03:00
RPM_OSTREE_FEATURES="$RPM_OSTREE_FEATURES compose"
2014-09-17 05:45:30 +04:00
2019-03-06 20:31:36 +03:00
PKG_CHECK_VAR(BASH_COMPLETIONSDIR, [bash-completion], [completionsdir],,
2019-03-14 17:47:20 +03:00
BASH_COMPLETIONSDIR="${datadir}/bash-completion/completions")
2019-03-06 20:31:36 +03:00
AC_SUBST(BASH_COMPLETIONSDIR)
2018-08-20 17:40:57 +03:00
AC_PATH_PROG([cargo], [cargo])
AS_IF([test -z "$cargo"], [AC_MSG_ERROR([cargo is required for --enable-rust])])
AC_PATH_PROG([rustc], [rustc])
AS_IF([test -z "$rustc"], [AC_MSG_ERROR([rustc is required for --enable-rust])])
2018-05-31 23:31:22 +03:00
2020-12-31 19:55:19 +03:00
dnl See comment in install-extra-builddeps.sh
2020-12-11 18:09:57 +03:00
AM_CONDITIONAL(BUILDOPT_PREBUILT_BINDINGS, [test -f rpmostree-rust-prebuilt.h])
2018-08-22 18:32:54 +03:00
AC_MSG_CHECKING(whether to build in debug mode)
debug_release=release
if $(echo $CFLAGS |grep -q -E "(-O0|-Og)"); then
debug_release=debug
fi
AC_MSG_RESULT($debug_release)
2018-08-20 17:40:57 +03:00
dnl These bits based on gnome:librsvg/configure.ac
2018-11-05 18:50:24 +03:00
dnl By default, we build in release mode (but without LTO!)
2018-08-20 17:40:57 +03:00
AC_ARG_ENABLE(rust-debug,
AC_HELP_STRING([--enable-rust-debug],
[Build Rust code with debugging information [default=no]]),
[rust_debug_release=$enableval],
2018-08-22 18:32:54 +03:00
[rust_debug_release=$debug_release])
dnl Canonicalize yes/no to debug/release
AS_IF([test x$rust_debug_release = xno ], [rust_debug_release=release])
AS_IF([test x$rust_debug_release = xyes ], [rust_debug_release=debug])
2018-05-31 23:31:22 +03:00
2018-08-22 18:32:54 +03:00
RUST_TARGET_SUBDIR=${rust_debug_release}
2018-08-20 17:40:57 +03:00
AC_SUBST([RUST_TARGET_SUBDIR])
2018-05-31 23:31:22 +03:00
AM_CONDITIONAL(RUST_DEBUG, [test "x$rust_debug_release" = "xdebug"])
2018-08-20 17:40:57 +03:00
dnl Unconditional now.
RPM_OSTREE_FEATURES="$RPM_OSTREE_FEATURES rust"
2018-05-31 23:31:22 +03:00
2020-10-22 20:33:45 +03:00
AC_ARG_ENABLE(rojig,
AC_HELP_STRING([--enable-rojig],
[Support for shipping ostree commits via RPMs [default=no]]))
AM_CONDITIONAL([BUILDOPT_ROJIG], test x$enable_rojig = xyes)
AM_COND_IF([BUILDOPT_ROJIG], [
RPM_OSTREE_FEATURES="$RPM_OSTREE_FEATURES rojig"
AC_DEFINE([BUILDOPT_ROJIG], 1, [Define if rojig is enabled])
])
2018-08-20 17:40:57 +03:00
dnl And propagate the release/debug type to cmake
cmake_args=-DCMAKE_BUILD_TYPE=RelWithDebugInfo
2018-08-22 18:32:54 +03:00
if test ${debug_release} = debug; then
2016-10-21 21:39:06 +03:00
cmake_args="-DCMAKE_BUILD_TYPE=Debug"
2018-07-16 22:05:37 +03:00
fi
2020-05-14 03:38:48 +03:00
if test x${have_zchunk} = xno; then
cmake_args="${cmake_args} -DWITH_ZCHUNK:BOOL=0"
fi
2018-08-20 17:40:57 +03:00
export cmake_args
2018-07-16 22:05:37 +03:00
2016-06-29 04:33:02 +03:00
dnl I picked /usr/libexec/rpm-ostree just because we need an
dnl arbitrary path - we don't actually install there.
2019-03-18 19:11:14 +03:00
dnl Use `WITH_GIR=0`; it's our private libdnf bundle and we don't need the bindings.
2021-01-26 14:34:59 +03:00
dnl -fPIE for hardening
2016-08-03 21:30:17 +03:00
(set -euo pipefail; mkdir -p libdnf-build && cd libdnf-build &&
2016-06-29 04:33:02 +03:00
set -x &&
2021-01-26 14:34:59 +03:00
export CXXFLAGS="-fPIE $CXXFLAGS" &&
2016-06-29 04:33:02 +03:00
cmake \
-DCMAKE_INSTALL_PREFIX:PATH=/usr/libexec/rpm-ostree \
-DINCLUDE_INSTALL_DIR:PATH=/usr/libexec/rpm-ostree/include \
-DLIB_INSTALL_DIR:PATH=/usr/libexec/rpm-ostree \
-DSYSCONF_INSTALL_DIR:PATH=/usr/libexec/rpm-ostree/etc \
-DSHARE_INSTALL_PREFIX:PATH=/usr/libexec/rpm-ostree/share \
2021-01-26 14:34:59 +03:00
-DENABLE_STATIC:BOOL=1 \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
2017-11-28 00:54:04 +03:00
-DWITH_SWDB:BOOL=0 \
2018-07-31 19:12:19 +03:00
-DWITH_BINDINGS:BOOL=0 \
2018-07-17 19:22:26 +03:00
-DWITH_HTML:BOOL=0 \
-DWITH_MAN:BOOL=0 \
2019-03-18 19:11:14 +03:00
-DWITH_GIR:BOOL=0 \
2016-08-03 21:30:17 +03:00
${cmake_args} ../libdnf) || exit 1
2016-06-29 04:33:02 +03:00
2013-12-22 04:41:30 +04:00
AC_CONFIG_FILES([
Makefile
2016-03-09 19:20:06 +03:00
api-doc/Makefile
2015-03-20 03:45:30 +03:00
src/lib/rpm-ostree-1.pc
2017-07-21 20:32:58 +03:00
src/lib/rpmostree-version.h
2013-12-22 04:41:30 +04:00
])
AC_OUTPUT
echo "
$PACKAGE $VERSION
2014-03-29 06:04:52 +04:00
2017-07-07 17:45:10 +03:00
introspection: $found_introspection
2020-10-22 20:33:45 +03:00
rojig: ${enable_rojig:-no}
2017-07-07 17:45:10 +03:00
gtk-doc: $enable_gtk_doc
2020-10-28 23:06:26 +03:00
rust: $rust_debug_release
2020-12-31 19:55:19 +03:00
cbindgen: ${cbindgen:-external}
2020-12-22 01:27:52 +03:00
sqlite rpmdb default: ${enable_sqlite_rpmdb_default}
2013-12-22 04:41:30 +04:00
"