/
githubmirror
/
lvm2
Обзор
Документация
Войти
/
githubmirror
/
lvm2
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
Makefile.in
243 строки
8 KB
Zdenek Kabelac
make: add gccanalyze target for GCC -fanalyzer static analysis
11 май 2026, 11:18
11 май 2026, 11:18
0114fa6
Код
Авторство
О чём код?
# # Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved. # Copyright (C) 2004-2018 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@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ SUBDIRS = libdm conf daemons include lib libdaemon man scripts tools ifeq ("@UDEV_RULES@", "yes") SUBDIRS += udev endif ifeq ("@INTL@", "yes") SUBDIRS += po endif ifeq ($(MAKECMDGOALS),clean) SUBDIRS += test endif # FIXME Should use intermediate Makefiles here! ifeq ($(MAKECMDGOALS),distclean) SUBDIRS = conf include man test scripts \ libdaemon lib tools daemons libdm \ udev po tools.distclean: test.distclean endif DISTCLEAN_DIRS += lcov_reports* autom4te.cache DISTCLEAN_TARGETS += config.cache config.log config.status make.tmpl include make.tmpl include $(top_srcdir)/test/unit/Makefile lib: include libdaemon libdm daemons: lib libdaemon tools scripts: lib tools: lib libdaemon po: tools daemons man: tools all_man: tools test: tools daemons unit-test run-unit-test: test libdm daemons.device-mapper: libdm.device-mapper tools.device-mapper: libdm.device-mapper device-mapper: tools.device-mapper daemons.device-mapper man.device-mapper device_mapper: device-mapper ifeq ("@INTL@", "yes") lib.pofile: include.pofile tools.pofile: lib.pofile daemons.pofile: lib.pofile po.pofile: tools.pofile daemons.pofile pofile: po.pofile endif ifneq ("$(CFLOW_CMD)", "") tools.cflow: libdm.cflow lib.cflow daemons.cflow: tools.cflow cflow: include.cflow endif lib.cppcheck tools.cppcheck daemons.cppcheck: include.cppcheck lib.gccanalyze tools.gccanalyze daemons.gccanalyze: include.gccanalyze CSCOPE_DIRS = daemons include lib libdaemon scripts tools libdm test ifneq ("@CSCOPE_CMD@", "") cscope.out: @CSCOPE_CMD@ -b -R $(patsubst %,-s%,$(addprefix $(srcdir)/,$(CSCOPE_DIRS))) all: cscope.out endif DISTCLEAN_TARGETS += cscope.out CLEAN_DIRS += autom4te.cache check check_system check_cluster check_local check_lvmpolld check_lvmlockd_test check_lvmlockd_dlm check_lvmlockd_sanlock: test $(MAKE) -C test $(@) conf.generate man.generate: tools # how to use parenthesis in makefiles leftparen:=( LVM_VER := $(firstword $(subst $(leftparen), ,$(LVM_VERSION))) VER := LVM2.$(LVM_VER) # release file name FILE_VER := $(VER).tgz CLEAN_TARGETS += $(FILE_VER) CLEAN_DIRS += $(rpmbuilddir) dist: @echo "Generating $(FILE_VER)";\ (cd $(top_srcdir); git ls-tree -r HEAD --name-only | xargs tar --transform "s,^,$(VER)/," -c) | gzip >$(FILE_VER) rpm: dist $(RM) -r $(rpmbuilddir)/SOURCES $(MKDIR_P) $(rpmbuilddir)/SOURCES $(LN_S) -f $(abs_top_builddir)/$(FILE_VER) $(rpmbuilddir)/SOURCES $(LN_S) -f $(abs_top_srcdir)/spec/build.inc $(rpmbuilddir)/SOURCES $(LN_S) -f $(abs_top_srcdir)/spec/macros.inc $(rpmbuilddir)/SOURCES $(LN_S) -f $(abs_top_srcdir)/spec/packages.inc $(rpmbuilddir)/SOURCES DM_VER=$$(cut -d- -f1 $(top_srcdir)/VERSION_DM);\ GIT_VER=$$(cd $(top_srcdir); git describe | cut -d- --output-delimiter=. -f2,3 || echo 0);\ $(SED) -e "s,\(device_mapper_version\) [0-9.]*$$,\1 $$DM_VER," \ -e "s,^\(Version:[^0-9%]*\)[0-9.]*$$,\1 $(LVM_VER)," \ -e "s,^\(Release:[^0-9%]*\)[0-9.]\+,\1 $$GIT_VER," \ $(top_srcdir)/spec/source.inc >$(rpmbuilddir)/SOURCES/source.inc LC_ALL=C date '+* %a %b %d %Y LVM Development Team <linux-lvm@lists.linux.dev>' >$(rpmbuilddir)/SOURCES/changelog.inc V=$(V) rpmbuild -v --define "_topdir $(rpmbuilddir)" -ba $(top_srcdir)/spec/lvm2.spec generate: conf.generate man.generate $(MAKE) -C conf generate $(MAKE) -C man generate all_man: $(MAKE) -C man all_man install_system_dirs: $(INSTALL_DIR) $(DESTDIR)$(DEFAULT_SYS_DIR) $(INSTALL_ROOT_DIR) $(DESTDIR)$(DEFAULT_SYS_DIR)/devices $(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_ROOT_DIR) $(DESTDIR)/var/lib/lvm install_initscripts: $(MAKE) -C scripts install_initscripts install_systemd_generators: $(MAKE) -C scripts install_systemd_generators $(MAKE) -C man install_systemd_generators install_systemd_units: $(MAKE) -C scripts install_systemd_units install_all_man: $(MAKE) -C man install_all_man install_tmpfiles_configuration: $(MAKE) -C scripts install_tmpfiles_configuration help: @echo -e "\nAvailable targets:" @echo " all Default target." @echo " all_man Build all man pages with generators." @echo " clean Remove all compile files." @echo " cppcheck Run cppcheck static analysis." @echo " device-mapper Device mapper part of lvm2." @echo " dist Generate distributable file." @echo " distclean Remove all build files." @echo " gccanalyze Run GCC -fanalyzer static analysis." @echo " generate Generate man pages for sources." @echo " help Display callable targets." @echo " install Install all files." @echo " install_all_man Install all man pages." @echo " install_cluster Install cmirrord." @echo " install_device-mapper Install device mapper files." @echo " install_initscripts Install initialization scripts." @echo " install_lvm2 Install lvm2 files." @echo " install_systemd_units Install systemd units." @echo " lcov Generate lcov output (html + txt)." @echo " lcov-dated Generate lcov with timedate suffix." @echo " lcov-reset Reset lcov counters" @echo " man Build man pages." @echo " print-VARIABLE Resolve make variable." @echo " rpm Build rpm." @echo " run-unit-test Run unit tests." @echo " tags Generate c/etags." ifneq ("$(LCOV)", "") .PHONY: lcov-reset lcov lcov-dated 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 lcov-reset: $(LCOV) --zerocounters --directory $(top_builddir) ifneq ("$(GENHTML)", "") lcov: $(RM) -rf $(LCOV_REPORTS_DIR) $(MKDIR_P) $(LCOV_REPORTS_DIR) -find . -name '*.gc[dn][ao]' ! -newer make.tmpl -delete -$(LCOV) --capture --directory $(top_builddir) --ignore-errors source,negative,gcov \ --output-file $(LCOV_REPORTS_DIR)/out.info -test ! -s $(LCOV_REPORTS_DIR)/out.info || \ $(GENHTML) -o $(LCOV_REPORTS_DIR) --ignore-errors source \ $(LCOV_REPORTS_DIR)/out.info @# Text coverage: summary + per-file gcov + uncovered-line extracts $(MKDIR_P) $(LCOV_REPORTS_DIR)/txt -$(LCOV) --list $(LCOV_REPORTS_DIR)/out.info \ --ignore-errors source,negative \ > $(LCOV_REPORTS_DIR)/txt/summary.txt 2>/dev/null @for gcda in $$(find $(top_builddir) -name '*.gcda' 2>/dev/null); do \ dir=$$(dirname "$$gcda"); \ base=$$(basename "$$gcda" .gcda); \ src="$$base.c"; \ test -f "$$dir/$$src" || continue; \ outname=$$(echo "$$dir/$$src" | sed 's|^\./||;s|/|__|g'); \ ( cd "$$dir" && gcov -b "$$base.gcda" > /dev/null 2>&1 ) || continue; \ test -f "$$dir/$$src.gcov" || continue; \ mv "$$dir/$$src.gcov" "$(LCOV_REPORTS_DIR)/txt/$$outname.gcov"; \ grep -n -B2 -A2 '^\s*#####:' \ "$(LCOV_REPORTS_DIR)/txt/$$outname.gcov" \ > "$(LCOV_REPORTS_DIR)/txt/$$outname.uncov" 2>/dev/null; \ test -s "$(LCOV_REPORTS_DIR)/txt/$$outname.uncov" || \ $(RM) "$(LCOV_REPORTS_DIR)/txt/$$outname.uncov"; \ done @echo "HTML report: $(LCOV_REPORTS_DIR)/index.html" @echo "Coverage summary: $(LCOV_REPORTS_DIR)/txt/summary.txt" @echo "Full gcov files: $(LCOV_REPORTS_DIR)/txt/*.gcov" @echo "Uncovered lines: $(LCOV_REPORTS_DIR)/txt/*.uncov" endif endif ifneq ($(shell which ctags 2>/dev/null),) .PHONY: tags tags: test -z "$(shell find $(addprefix $(top_srcdir)/,$(CSCOPE_DIRS)) -type f -name '*.[ch]' -newer tags 2>/dev/null | head -1)" || $(RM) tags test -f tags || find $(addprefix $(top_srcdir)/,$(CSCOPE_DIRS)) -maxdepth 5 -type f -name '*.[ch]' -exec ctags -a '{}' + CLEAN_TARGETS += tags endif