#
# 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
SUBDIRS += lib tools daemons libdm
+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 \
- daemons/dmeventd/plugins \
- lib/format1 \
- lib/format_pool \
- lib/locking \
- lib/mirror \
- lib/snapshot \
- test \
- po
- DISTCLEAN_TARGETS += lib/misc/configure.h
- DISTCLEAN_DIRS += lcov_reports*
+ 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
libdm: include
-lib: libdm
-daemons: lib
-tools: lib
+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
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
-check: all
- $(MAKE) -C test all
+install_systemd_units:
+ $(MAKE) -C scripts install_systemd_units
-ifneq ("@LCOV@", "")
-.PHONY: lcov-reset lcov lcov-dated
+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=$(top_srcdir)/lcov_reports-$(shell date +%Y%m%d%k%M%S)
+LCOV_REPORTS_DIR := lcov_reports-$(shell date +%Y%m%d%k%M%S)
+lcov-dated: lcov
else
-LCOV_REPORTS_DIR=$(top_srcdir)/lcov_reports
+LCOV_REPORTS_DIR := lcov_reports
endif
lcov-reset:
- $(LCOV) -d $(top_srcdir)/dmeventd --zerocounters
- $(LCOV) -d $(top_srcdir)/lib --zerocounters
- $(LCOV) -d $(top_srcdir)/tools --zerocounters
-
-lcov: all
- $(RM) -rf $(LCOV_REPORTS_DIR)
+ $(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)
- $(LCOV) -b $(top_srcdir)/lib -d $(top_srcdir)/lib -c -o $(LCOV_REPORTS_DIR)/lib.info
- $(LCOV) -b $(top_srcdir)/tools -d $(top_srcdir)/tools -c -o $(LCOV_REPORTS_DIR)/tools.info
- DMEVENTD_INFO="$(LCOV_REPORTS_DIR)/dmeventd.info" ;\
- DMEVENTD_INFO_A="-a $$DMEVENTDINFO" ;\
- $(LCOV) -b $(top_srcdir)/dmeventd -d $(top_srcdir)/dmeventd -c -o $$DMEVENTD_INFO || DMEVENTD_INFO_A="" ;\
- $(LCOV) $$DMEVENTD_INFO_A -a $(LCOV_REPORTS_DIR)/lib.info \
- -a $(LCOV_REPORTS_DIR)/tools.info \
- -o $(LCOV_REPORTS_DIR)/lvm.info
-ifneq ("@GENHTML@", "")
- $(GENHTML) -o $(LCOV_REPORTS_DIR) -p $(top_srcdir) $(LCOV_REPORTS_DIR)/lvm.info
+ 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
-lcov-dated: lcov
+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
+
+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