AM_CPPFLAGS = \
	-include config.h \
	-I$(top_srcdir)/include \
	-DLOCALEDIR=\"$(localedir)\" \
	-D_PATH_RUNSTATEDIR=\"${runstatedir}\"
AM_CFLAGS = -fsigned-char $(WARN_CFLAGS)
AM_LDFLAGS =

# Add gettext stuff to the global LDADD for systems with separate libintl
# library. The LTLIBINTL is generated by AM_GNU_GETTEXT macro.
#
LDADD = $(LTLIBINTL)

# Automake (at least up to 1.10) mishandles dist_man_MANS inside conditionals.
# Unlike with other dist primaries, the files are not distributed if the
# conditional is false.
# Work the bug around until it is fixed:
dist_noinst_DATA = $(dist_man_MANS)

# Paths to in-tree libraries (use ul_ prefix to avoid possible collisions) Note
# that blkid.h, libmount.h, libfdisk.h and libsmartcols.h are generated and
# stored in build dirs.
#
ul_libblkid_incdir = $(top_builddir)/libblkid/src
ul_libmount_incdir = $(top_builddir)/libmount/src
ul_libsmartcols_incdir = $(top_builddir)/libsmartcols/src
ul_libfdisk_incdir  = $(top_builddir)/libfdisk/src

ul_libuuid_incdir  = $(top_srcdir)/libuuid/src

pkgconfigdir = $(usrlib_execdir)/pkgconfig

bashcompletiondir = @bashcompletiondir@

dist_noinst_HEADERS =
noinst_PROGRAMS =
noinst_LTLIBRARIES =
usrbin_exec_PROGRAMS =
usrsbin_exec_PROGRAMS =
dist_man_MANS =
man_MANS =
pkgconfig_DATA =
usrlib_exec_LTLIBRARIES =
bin_PROGRAMS =
sbin_PROGRAMS =
dist_usrbin_exec_SCRIPTS =
systemdsystemunit_DATA =
dist_bashcompletion_DATA =
check_PROGRAMS =
dist_check_SCRIPTS =

PATHFILES =

INSTALL_EXEC_HOOKS =
UNINSTALL_HOOKS =
INSTALL_DATA_HOOKS =
CLEAN_LOCALS =
CHECK_LOCALS =

EXTRA_DIST =
CLEANFILES =

SUBDIRS = po

RCS_FIND_IGNORE = \( -name SCCS -o -name BitKeeper -o -name .svn -o \
		-name CVS -o -name .pc -o -name .hg -o -name .git \) -prune -o

ACLOCAL_AMFLAGS = -I m4

EXTRA_DIST += \
	.version \
	autogen.sh \
	Documentation \
	po/update-potfiles \
	README.licensing

include tools/Makemodule.am
include include/Makemodule.am
include lib/Makemodule.am
include libuuid/Makemodule.am
include libblkid/Makemodule.am
include libmount/Makemodule.am
include libsmartcols/Makemodule.am
include libfdisk/Makemodule.am

include schedutils/Makemodule.am
include text-utils/Makemodule.am
include term-utils/Makemodule.am
include login-utils/Makemodule.am
include sys-utils/Makemodule.am
include misc-utils/Makemodule.am
include disk-utils/Makemodule.am

include bash-completion/Makemodule.am

include tests/Makemodule.am

# pylibmountexec module must be installed after usrlib_exec libraries,
# otherwise the libtool relink step will fail to find libmount.la and
# will try -lmount which is possibly not available.
#
# So introduce this dependency rule:
# install-pylibmountexecLTLIBRARIES: install-usrlib_execLTLIBRARIES
@verbatim_pylibmount_dependency@

#
# Don't rely on configure.ac AC_CONFIG_FILES for install paths.
#
# The paths should be expanded at make time rather than configure:
#  - to support 'make install prefix=/foo DESTDIR=/foo'
#  - to recursively expands the paths (e.g. AC_CONFIG_FILES expands
#    '@usrsbin_execdir@' to ${exec_prefix}/sbin')
#
edit_cmd = sed \
	 -e 's|@prefix[@]|$(prefix)|g' \
	 -e 's|@exec_prefix[@]|$(exec_prefix)|g' \
	 -e 's|@sysconfdir[@]|$(sysconfdir)|g' \
	 -e 's|@datadir[@]|$(datadir)|g' \
	 -e 's|@sbindir[@]|$(sbindir)|g' \
	 -e 's|@bindir[@]|$(bindir)|g' \
	 -e 's|@includedir[@]|$(includedir)|g' \
	 -e 's|@runstatedir[@]|$(runstatedir)|g' \
	 -e 's|@usrlib_execdir[@]|$(usrlib_execdir)|g' \
	 -e 's|@usrbin_execdir[@]|$(usrbin_execdir)|g' \
	 -e 's|@usrsbin_execdir[@]|$(usrsbin_execdir)|g' \
	 -e 's|@VERSION[@]|$(VERSION)|g' \
	 -e 's|@ADJTIME_PATH[@]|$(ADJTIME_PATH)|g' \
	 -e 's|@LIBUUID_VERSION[@]|$(LIBUUID_VERSION)|g' \
	 -e 's|@LIBMOUNT_VERSION[@]|$(LIBMOUNT_VERSION)|g' \
	 -e 's|@LIBMOUNT_MAJOR_VERSION[@]|$(LIBMOUNT_MAJOR_VERSION)|g' \
	 -e 's|@LIBMOUNT_MINOR_VERSION[@]|$(LIBMOUNT_MINOR_VERSION)|g' \
	 -e 's|@LIBMOUNT_PATCH_VERSION[@]|$(LIBMOUNT_PATCH_VERSION)|g' \
	 -e 's|@LIBSMARTCOLS_VERSION[@]|$(LIBSMARTCOLS_VERSION)|g' \
	 -e 's|@LIBFDISK_PC_REQUIRES[@]|$(LIBFDISK_PC_REQUIRES)|g' \
	 -e 's|@LIBFDISK_VERSION[@]|$(LIBFDISK_VERSION)|g' \
	 -e 's|@LIBFDISK_MAJOR_VERSION[@]|$(LIBFDISK_MAJOR_VERSION)|g' \
	 -e 's|@LIBFDISK_MINOR_VERSION[@]|$(LIBFDISK_MINOR_VERSION)|g' \
	 -e 's|@LIBFDISK_PATCH_VERSION[@]|$(LIBFDISK_PATCH_VERSION)|g' \
	 -e 's|@LIBBLKID_VERSION[@]|$(LIBBLKID_VERSION)|g'

CLEANFILES += $(PATHFILES)
EXTRA_DIST += $(PATHFILES:=.in)

$(PATHFILES): Makefile
	@ rm -f $@ $@.tmp
	$(AM_V_at) $(MKDIR_P) $$(dirname $@)
	$(AM_V_GEN) srcdir=''; \
		test -f ./$@.in || srcdir=$(srcdir)/; \
		$(edit_cmd) $${srcdir}$@.in >$@.tmp
	@ mv $@.tmp $@

# Arrange so that .tarball-version appears only in the distribution
# tarball, and never in a checked-out repository.
dist-hook:
	echo $(VERSION) > $(distdir)/.tarball-version
# Set ChangeLog tag reference.
	sed -i "s/log/log;h=$(VERSION)/" $(distdir)/ChangeLog

distclean-local:
	-find . -name \*~ -o -name \*.orig -o -name \*.rej | xargs rm -f
	rm -rf autom4te.cache


checkincludes:
	@find * $(RCS_FIND_IGNORE) \
		-name '*.[hcS]' -type f -print | sort -u \
		| xargs $(top_srcdir)/tools/checkincludes.pl

checkconfig:
	@find * $(RCS_FIND_IGNORE) \
		-name '*.[hcS]' -type f -print | sort -u \
		| xargs $(top_srcdir)/tools/checkconfig.sh $(top_srcdir)

checkmans:
	@$(top_srcdir)/tools/checkmans.sh

checkxalloc:
	@ $(top_srcdir)/tools/checkxalloc.sh

checkdecl:
	@ $(top_srcdir)/tools/checkdecl.sh

checkcompletion:
	@ $(top_srcdir)/tools/checkcompletion.sh $(top_srcdir)

checkusage:
	@ $(top_srcdir)/tools/checkusage.sh \
		$(bin_PROGRAMS) $(sbin_PROGRAMS) \
		$(usrbin_exec_PROGRAMS) $(usrsbin_exec_PROGRAMS)

DISTCHECK_CONFIGURE_FLAGS = \
	--disable-use-tty-group \
	--disable-silent-rules \
	--enable-all-programs \
	--disable-makeinstall-chown \
	--enable-static-programs \
	--enable-gtk-doc \
	--with-python \
	--with-bashcompletiondir=$$dc_install_base/$(bashcompletiondir) \
	--with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir)

BUILT_SOURCES = .version
.version:
	echo $(VERSION) > $@-t && mv $@-t $@

CHANGELOG_FILE = v$(VERSION)-ChangeLog

$(CHANGELOG_FILE):
	@ if test "x$$PREVIOUS_VERSION" == "x"; then \
		echo "Usage make changelog PREVIOUS_VERSION=<version>"; \
		exit 1; \
	fi
	@ echo "Changes between v$(PREVIOUS_VERSION) and v$(VERSION)" > $(CHANGELOG_FILE)
	@ echo "--------------------------------------------" >> $(CHANGELOG_FILE)
	@ echo >> $(CHANGELOG_FILE)
	$(AM_V_GEN) git log --stat v$(PREVIOUS_VERSION)..HEAD >> $(CHANGELOG_FILE)
#
#
# smatch scan -- smatch and cgcc are expected in $PATH
#
checksmatch:
	$(MAKE) CHECK="smatch --data=$(abs_top_srcdir)/tools/smatch-data" CC=cgcc

changelog: $(CHANGELOG_FILE)

install-exec-hook: $(INSTALL_EXEC_HOOKS)

uninstall-hook: $(UNINSTALL_HOOKS)

install-data-hook: $(INSTALL_DATA_HOOKS)

clean-local: $(CLEAN_LOCALS)

check-local: $(CHECK_LOCALS)
