2013-12-22 04:41:30 +04:00
AC_PREREQ([2.63])
2017-07-11 00:10:42 +03:00
dnl To do a release, increment this number, commit, then submit it as a PR
dnl to merge via homu. After that, do `git pull origin && git reset --hard origin/master`.
2018-02-18 19:41:36 +03:00
dnl Then draft release notes highlighting changes and generate the shortlog using
dnl <https://github.com/cgwalters/homegit/blob/master/bin/git-shortlog-with-prs>.
dnl Then use <https://github.com/cgwalters/git-evtag> to create a signed tag with the
dnl release notes as its content.
2017-07-11 00:10:42 +03:00
dnl Then, git push origin v201X.XX
2018-01-15 19:26:42 +03:00
m4_define([year_version], [2018])
2018-06-29 18:05:38 +03:00
m4_define([release_version], [6])
2017-07-21 20:32:58 +03:00
m4_define([package_version], [year_version.release_version])
AC_INIT([rpm-ostree], [package_version], [atomic-devel@projectatomic.io])
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
AM_PROG_CC_C_O
2015-04-28 04:22:58 +03:00
# dbus system dir
AC_MSG_CHECKING(for dbus system services directory)
if test "$enable_prefix_only" = "yes"; then
dbusservicedir='${datadir}/dbus-1/system-services'
else
dbusservicedir='${datadir}/dbus-1/system-services'
if test "$dbusservicedir" = ""; then
AC_MSG_ERROR(Couldn't find dbus services directory. Try installing dbus-devel)
fi
fi
AC_SUBST([dbusservicedir], [$dbusservicedir])
AC_MSG_RESULT(dbusservicedir)
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 \
-Wall \
-Werror=empty-body \
-Werror=strict-prototypes \
-Werror=missing-prototypes \
-Werror=implicit-function-declaration \
"-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=int-conversion \
-Werror=parenthesis \
-Werror=undef \
-Werror=incompatible-pointer-types \
-Werror=misleading-indentation \
-Werror=missing-include-dirs -Werror=aggregate-return \
-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
2014-11-10 04:28:10 +03:00
save_LIBS="$LIBS"
LIBS=
AC_SEARCH_LIBS([cap_init], [cap], [], [AC_MSG_ERROR([*** POSIX caps library not found])])
CAP_LIBS="$LIBS"
AC_SUBST(CAP_LIBS)
LIBS="$save_LIBS"
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])
2017-12-15 17:50:43 +03:00
PKG_CHECK_MODULES(PKGDEP_RPMOSTREE, [gio-unix-2.0 >= 2.50.0 json-glib-1.0
2018-02-17 00:30:06 +03:00
ostree-1 >= 2018.2
2016-06-17 22:14:24 +03:00
libsystemd
2017-06-09 13:52:01 +03:00
polkit-gobject-1
2017-12-09 01:41:29 +03:00
rpm librepo libsolv
2016-01-12 19:22:16 +03:00
libarchive])
2016-08-03 21:30:17 +03:00
dnl bundled libdnf
PKGDEP_RPMOSTREE_CFLAGS="-I $(pwd)/libdnf -I $(pwd)/libdnf-build $PKGDEP_RPMOSTREE_CFLAGS"
PKGDEP_RPMOSTREE_LIBS="-L$(pwd)/libdnf-build/libdnf -ldnf $PKGDEP_RPMOSTREE_LIBS"
2015-05-26 17:43:33 +03:00
2017-07-07 17:45:10 +03:00
dnl This is the current version in Fedora 25.
AS_IF([pkg-config --atleast-version=4.13.0.1 rpm], [
2018-01-18 21:16:27 +03:00
have_modern_rpm=true
AC_DEFINE([BUILDOPT_HAVE_RPMSQ_SET_INTERRUPT_SAFETY], 1, [Set to 1 if we have interrupt safety API])
AC_DEFINE([BUILDOPT_HAVE_RPM_FILETRIGGERS], 1, [Set to 1 if we have file triggers])
AC_DEFINE([BUILDOPT_HAVE_RPMFILES], 1, [Set to 1 if we have rpmfiles API])
2017-07-07 17:45:10 +03:00
], [have_modern_rpm=false])
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
2016-06-17 22:14:24 +03:00
AC_CHECK_TOOL(GPERF, gperf)
AS_IF([test -z "$GPERF"],
AC_MSG_ERROR([*** gperf not found])
)
2017-02-17 20:29:10 +03:00
dnl stolen from https://github.com/systemd/systemd/commit/c9f7b4d
GPERF_TEST="$(echo foo,bar | ${GPERF} -L ANSI-C)"
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([
#include <string.h>
const char * in_word_set(const char *, size_t);
$GPERF_TEST]
)],
[GPERF_LEN_TYPE=size_t],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([
#include <string.h>
const char * in_word_set(const char *, unsigned);
$GPERF_TEST]
)],
[GPERF_LEN_TYPE=unsigned],
[AC_MSG_ERROR([** unable to determine gperf len type])]
)]
)
AC_DEFINE_UNQUOTED([GPERF_LEN_TYPE], [$GPERF_LEN_TYPE], [gperf len type])
2016-06-17 22:14:24 +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
2014-07-16 17:02:45 +04:00
AC_ARG_ENABLE(installed_tests,
AS_HELP_STRING([--enable-installed-tests],
[Install test programs (default: no)]),,
[enable_installed_tests=no])
AM_CONDITIONAL(BUILDOPT_INSTALL_TESTS, test x$enable_installed_tests = xyes)
2016-10-19 21:24:40 +03:00
AC_ARG_ENABLE(new-name,
AS_HELP_STRING([--enable-new-name],
[Install additionally as nts (default: no)]),,
[enable_new_name=no])
AM_CONDITIONAL(BUILDOPT_NEW_NAME, test x$enable_new_name = xyes)
2016-07-05 19:20:09 +03:00
AC_ARG_WITH(bubblewrap,
AS_HELP_STRING([--with-bubblewrap],
[Path to bubblewrap binary (default: /usr/bin/bwrap)]),,
[with_bubblewrap=/usr/bin/bwrap])
AC_DEFINE_UNQUOTED(WITH_BUBBLEWRAP_PATH, ["$with_bubblewrap"], [Define to bubblewrap path])
2014-09-17 05:45:30 +04:00
dnl Some distributions may want to support the client tooling, but not
dnl the server side.
AC_ARG_ENABLE(compose-tooling,
AS_HELP_STRING([--enable-compose-tooling],
[Build compose tooling]),,
[enable_compose_tooling=yes])
AM_CONDITIONAL(BUILDOPT_COMPOSE_TOOLING, [test x$enable_compose_tooling = xyes])
AS_IF([test x$enable_compose_tooling = xyes], [
AC_DEFINE(HAVE_COMPOSE_TOOLING, 1, [Define if we are building compose tooling])
])
2017-03-06 23:53:02 +03:00
if test x$enable_compose_tooling != xno; then RPM_OSTREE_FEATURES="$RPM_OSTREE_FEATURES compose"; fi
2014-09-17 05:45:30 +04:00
2018-05-31 23:31:22 +03:00
AC_ARG_ENABLE(rust,
AS_HELP_STRING([--enable-rust],
[Compile Rust features (e.g. compose tree --yaml)]),,
[enable_rust=no; rust_debug_release=no])
AS_IF([test x$enable_rust = xyes], [
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])])
AC_DEFINE(HAVE_RUST, 1, [Define if we are building with Rust])
dnl These bits based on gnome:librsvg/configure.ac
dnl By default, we build in public release mode.
AC_ARG_ENABLE(rust-debug,
AC_HELP_STRING([--enable-rust-debug],
[Build Rust code with debugging information [default=no]]),
[rust_debug_release=$enableval],
[rust_debug_release=release])
AC_MSG_CHECKING(whether to build Rust code with debugging information)
if test "x$rust_debug_release" = "xyes" ; then
rust_debug_release=debug
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
RUST_TARGET_SUBDIR=${rust_debug_release}
AC_SUBST([RUST_TARGET_SUBDIR])
])
AM_CONDITIONAL(RUST_DEBUG, [test "x$rust_debug_release" = "xdebug"])
AM_CONDITIONAL(ENABLE_RUST, [test x$enable_rust = xyes])
if test x$enable_rust != xno; then RPM_OSTREE_FEATURES="$RPM_OSTREE_FEATURES rust"; fi
2016-06-29 04:33:02 +03:00
dnl Try to automatically determine cmake type from CFLAGS
2018-03-01 20:28:27 +03:00
if $(echo $CFLAGS |grep -q -E "(-O0|-Og)"); then
2016-10-21 21:39:06 +03:00
cmake_args="-DCMAKE_BUILD_TYPE=Debug"
2016-06-29 04:33:02 +03:00
export cmake_args
else
cmake_args=-DCMAKE_BUILD_TYPE=RelWithDebugInfo
export cmake_args
fi
dnl I picked /usr/libexec/rpm-ostree just because we need an
dnl arbitrary path - we don't actually install there.
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 &&
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 \
-DBUILD_SHARED_LIBS:BOOL=ON \
2017-11-28 00:54:04 +03:00
-DWITH_SWDB: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
built with modern RPM (e.g. Fedora 25+): $have_modern_rpm
nts name: $enable_new_name
compose tooling: $enable_compose_tooling
introspection: $found_introspection
bubblewrap: $with_bubblewrap
gtk-doc: $enable_gtk_doc
2018-05-31 23:31:22 +03:00
rust: $enable_rust
2013-12-22 04:41:30 +04:00
"