# Copyright (C) 2011-2015 Red Hat, Inc. All rights reserved.
#
# This file is part of LVM2.
#
# This copyrighted material is made available to anyone wishing to use,
# modify, copy, or redistribute it subject to the terms and conditions
# of the GNU General Public License v.2.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

srcdir = @srcdir@
top_srcdir = @top_srcdir@
top_builddir = @top_builddir@

VPATH = $(srcdir)
UNITS = \
	bitset_t.c\
	config_t.c\
	dmlist_t.c\
	dmstatus_t.c\
	matcher_t.c\
	string_t.c\
	run.c

include $(top_builddir)/make.tmpl

ifeq ($(MAKECMDGOALS),distclean)
SOURCES = $(UNITS)
endif

ifeq ("$(TESTING)", "yes")
SOURCES = $(UNITS)
TARGETS = run
endif

ifeq ("$(TESTING)", "yes")
LDLIBS += -ldevmapper @CUNIT_LIBS@
CFLAGS += @CUNIT_CFLAGS@

check: unit

$(TARGETS): $(OBJECTS) $(top_builddir)/libdm/libdevmapper.$(LIB_SUFFIX)

unit: $(TARGETS)
	@echo Running unit tests
	LD_LIBRARY_PATH=$(top_builddir)/libdm ./$(TARGETS)
endif
