#
# Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
-# Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
+# Copyright (C) 2004-2010 Red Hat, Inc. All rights reserved.
#
# This file is part of LVM2.
#
srcdir = @srcdir@
top_srcdir = @top_srcdir@
-VPATH = @srcdir@
+top_builddir = @top_builddir@
-SUBDIRS = doc include man scripts
+SUBDIRS = doc include man
+
+ifeq ("@UDEV_RULES@", "yes")
+ SUBDIRS += udev
+endif
ifeq ("@INTL@", "yes")
SUBDIRS += po
endif
-SUBDIRS += lib tools daemons
+SUBDIRS += lib tools daemons libdm
-ifeq ("@DMEVENTD@", "yes")
- SUBDIRS += dmeventd
+ifeq ("@APPLIB@", "yes")
+ SUBDIRS += liblvm
endif
+ifeq ("@BUILD_LVMETAD@", "yes")
+ SUBDIRS += libdaemon
+endif
+
+SUBDIRS += scripts
+
+# FIXME Should use intermediate Makefiles here!
ifeq ($(MAKECMDGOALS),distclean)
- SUBDIRS += daemons/clvmd \
- dmeventd \
- lib/format1 \
- lib/format_pool \
- lib/locking \
- lib/mirror \
- lib/snapshot \
- test \
- po
- DISTCLEAN_TARGETS += lib/misc/configure.h
+ SUBDIRS = doc include man scripts \
+ libdaemon lib tools daemons libdm \
+ udev po liblvm test \
+ unit-tests/datastruct unit-tests/mm unit-tests/regex
endif
+DISTCLEAN_DIRS += lcov_reports*
+DISTCLEAN_TARGETS += config.cache config.log config.status make.tmpl
include make.tmpl
-daemons: lib
-lib: include
-tools: lib
-dmeventd: tools
-po: tools daemons dmeventd
+libdm: include
+lib: libdm libdaemon
+liblvm: lib
+daemons: lib libdaemon tools
+tools: lib libdaemon device-mapper
+po: tools daemons
+scripts: liblvm libdm
+
+lib.device-mapper: include.device-mapper
+libdm.device-mapper: include.device-mapper
+liblvm.device-mapper: include.device-mapper
+daemons.device-mapper: libdm.device-mapper
+tools.device-mapper: libdm.device-mapper
+device-mapper: tools.device-mapper daemons.device-mapper man.device-mapper
ifeq ("@INTL@", "yes")
lib.pofile: include.pofile
tools.pofile: lib.pofile
daemons.pofile: lib.pofile
-dmeventd.pofile: tools.pofile
-po.pofile: tools.pofile daemons.pofile dmeventd.pofile
+po.pofile: tools.pofile daemons.pofile
pofile: po.pofile
endif
-ifneq ("@CFLOW_CMD@", "")
-tools.cflow: lib.cflow
-cflow: tools.cflow
+ifneq ("$(CFLOW_CMD)", "")
+tools.cflow: libdm.cflow lib.cflow
+daemons.cflow: tools.cflow
+cflow: include.cflow
endif
ifneq ("@CSCOPE_CMD@", "")
-cscope.out: tools
- @CSCOPE_CMD@ -b -R
+cscope.out:
+ @CSCOPE_CMD@ -b -R -s$(top_srcdir)
all: cscope.out
endif
+DISTCLEAN_TARGETS += cscope.out
+
+check check_cluster check_local check_lvmetad unit: all
+ $(MAKE) -C test $(@)
+
+install_system_dirs:
+ $(INSTALL_DIR) $(DESTDIR)$(DEFAULT_SYS_DIR)
+ $(INSTALL_ROOT_DIR) $(DESTDIR)$(DEFAULT_ARCHIVE_DIR)
+ $(INSTALL_ROOT_DIR) $(DESTDIR)$(DEFAULT_BACKUP_DIR)
+ $(INSTALL_ROOT_DIR) $(DESTDIR)$(DEFAULT_CACHE_DIR)
+ $(INSTALL_ROOT_DIR) $(DESTDIR)$(DEFAULT_LOCK_DIR)
+ $(INSTALL_ROOT_DIR) $(DESTDIR)$(DEFAULT_RUN_DIR)
+ $(INSTALL_ROOT_DATA) /dev/null $(DESTDIR)$(DEFAULT_CACHE_DIR)/.cache
+
+install_initscripts:
+ $(MAKE) -C scripts install_initscripts
+
+install_systemd_generators:
+ $(MAKE) -C scripts install_systemd_generators
+
+install_systemd_units:
+ $(MAKE) -C scripts install_systemd_units
+
+install_tmpfiles_configuration:
+ $(MAKE) -C scripts install_tmpfiles_configuration
+
+LCOV_TRACES = libdm.info lib.info tools.info \
+ daemons/dmeventd.info daemons/clvmd.info
+CLEAN_TARGETS += $(LCOV_TRACES)
+
+ifneq ("$(LCOV)", "")
+.PHONY: lcov-reset lcov lcov-dated $(LCOV_TRACES)
+
+ifeq ($(MAKECMDGOALS),lcov-dated)
+LCOV_REPORTS_DIR := lcov_reports-$(shell date +%Y%m%d%k%M%S)
+lcov-dated: lcov
+else
+LCOV_REPORTS_DIR := lcov_reports
+endif
-check: all
- $(MAKE) -C test all
-
-ifneq ("@LCOV@", "")
-
-CLEAN_DIRTARGETS += $(top_srcdir)/covhtml*
-CLEAN_TARGETS += $(shell find $(top_srcdir) -name '*.gcda' -o -name '*.gcno')
-
-cov-reset:
- $(LCOV) -d $(top_srcdir)/dmeventd --zerocounters
- $(LCOV) -d $(top_srcdir)/lib --zerocounters
- $(LCOV) -d $(top_srcdir)/tools --zerocounters
-
-_cov-common:
- $(RM) -rf $(_INTERNAL_COVDIR)
- $(MKDIR_P) $(_INTERNAL_COVDIR)
- $(LCOV) -b $(top_srcdir)/lib -d $(top_srcdir)/lib -c -o $(_INTERNAL_COVDIR)/lib.info
- $(LCOV) -b $(top_srcdir)/tools -d $(top_srcdir)/tools -c -o $(_INTERNAL_COVDIR)/tools.info
- DMEVENTDINFO="$(_INTERNAL_COVDIR)/dmeventd.info" ;\
- ADMEVENTDINFO="-a $$DMEVENTDINFO" ;\
- $(LCOV) -b $(top_srcdir)/dmeventd -d $(top_srcdir)/dmeventd -c -o $$DMEVENTDINFO || ADMEVENTDINFO="" ;\
- $(LCOV) $$ADMEVENTDINFO -a $(_INTERNAL_COVDIR)/lib.info \
- -a $(_INTERNAL_COVDIR)/tools.info \
- -o $(_INTERNAL_COVDIR)/lvm.info
-ifneq ("@GENHTML@", "")
- $(GENHTML) -o $(_INTERNAL_COVDIR) -p $(top_srcdir) $(_INTERNAL_COVDIR)/lvm.info
+lcov-reset:
+ $(LCOV) --zerocounters $(addprefix -d , $(basename $(LCOV_TRACES)))
+
+# maybe use subdirs processing to create tracefiles...
+$(LCOV_TRACES):
+ $(LCOV) -b $(basename $@) -d $(basename $@) \
+ --ignore-errors source -c -o - | $(SED) \
+ -e "s/\(dmeventd_lvm.[ch]\)/plugins\/lvm2\/\1/" \
+ -e "s/dmeventd_\(mirror\|snapshot\|thin\|raid\)\.c/plugins\/\1\/dmeventd_\1\.c/" \
+ >$@
+
+ifneq ("$(GENHTML)", "")
+lcov: $(LCOV_TRACES)
+ $(RM) -r $(LCOV_REPORTS_DIR)
+ $(MKDIR_P) $(LCOV_REPORTS_DIR)
+ for i in $(LCOV_TRACES); do \
+ test -s $$i && lc="$$lc $$i"; \
+ done; \
+ test -z "$$lc" || $(GENHTML) -p @abs_top_builddir@ \
+ -o $(LCOV_REPORTS_DIR) $$lc
endif
-cov: _INTERNAL_COVDIR=$(top_srcdir)/covhtml
-cov: _cov-common
+endif
+
+ifeq ("$(TESTING)", "yes")
+# testing and report generation
+RUBY=ruby1.9 -Ireport-generators/lib -Ireport-generators/test
+
+.PHONEY: unit-test ruby-test test-programs
+
+# FIXME: put dependencies on libdm and liblvm
+# FIXME: Should be handled by Makefiles in subdirs, not here at top level.
+test-programs:
+ cd unit-tests/regex && $(MAKE)
+ cd unit-tests/datastruct && $(MAKE)
+ cd unit-tests/mm && $(MAKE)
+
+unit-test: test-programs
+ $(RUBY) report-generators/unit_test.rb $(shell find . -name TESTS)
+ $(RUBY) report-generators/title_page.rb
-covd: _INTERNAL_COVDIR=$(top_srcdir)/covhtml-$(shell date +%F-%k-%M-%S)
-covd: _cov-common
+memcheck: test-programs
+ $(RUBY) report-generators/memcheck.rb $(shell find . -name TESTS)
+ $(RUBY) report-generators/title_page.rb
+ruby-test:
+ $(RUBY) report-generators/test/ts.rb
endif