加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
Makefile 3.04 KB
一键复制 编辑 原始数据 按行查看 历史
#
# Copyright (C) 2003 Christophe Varoqui, <christophe.varoqui@opensvc.com>
#
TOPDIR := .
LIB_BUILDDIRS := \
libmpathcmd \
libmpathutil \
libmultipath \
libmpathpersist \
libmpathvalid
ifneq ($(ENABLE_LIBDMMP),0)
LIB_BUILDDIRS += \
libdmmp
endif
BUILDDIRS := $(LIB_BUILDDIRS) \
libmultipath/prioritizers \
libmultipath/checkers \
libmultipath/foreign \
multipath \
multipathd \
mpathpersist \
kpartx
BUILDDIRS.clean := $(BUILDDIRS:=.clean) tests.clean
.PHONY: $(BUILDDIRS)
all: $(BUILDDIRS)
config.mk libmultipath/autoconfig.h:
@$(MAKE) -f create-config.mk
ifeq ($(V),1)
@echo ==== config.mk ====
@cat config.mk
@echo ==== autoconfig.h ====
@cat libmultipath/autoconfig.h
endif
$(BUILDDIRS): config.mk
@$(MAKE) -C $@
$(LIB_BUILDDIRS:=.abi): $(LIB_BUILDDIRS)
@$(MAKE) -C ${@:.abi=} abi
# Create formal representation of the ABI
# Useful for verifying ABI compatibility
# Requires abidw from the abigail suite (https://sourceware.org/libabigail/)
.PHONY: abi
abi: $(LIB_BUILDDIRS:=.abi)
@echo creating abi
@mkdir -p $@
$(Q)ln -ft $@ $(LIB_BUILDDIRS:=/*.abi)
abi.tar.gz: abi
$(Q)tar cfz $@ abi
# Check the ABI against a reference.
# This requires the ABI from a previous run to be present
# in the directory "reference-abi"
# Requires abidiff from the abigail suite
abi-test: abi reference-abi $(wildcard abi/*.abi)
@err=0; \
for lib in abi/*.abi; do \
diff=$$(abidiff --redundant "reference-$$lib" "$$lib") || { \
err=1; \
echo "==== ABI differences in for $$lib ===="; \
echo "$$diff"; \
}; \
done >$@; \
if [ $$err -eq 0 ]; then \
echo "*** OK, ABI unchanged ***"; \
else \
echo "*** WARNING: ABI has changed, see file $@ ***"; \
fi; \
[ $$err -eq 0 ]
# Create compile_commands.json, useful for using clangd with an IDE
# Requires bear (https://github.com/rizsotto/Bear)
compile_commands.json: Makefile Makefile.inc $(BUILDDIRS:=/Makefile)
$(Q)$(MAKE) clean
$(Q)bear -- $(MAKE)
libmpathutil libdmmp: libmpathcmd
libmultipath: libmpathutil
libmpathpersist libmpathvalid multipath multipathd: libmultipath
libmultipath/prioritizers libmultipath/checkers libmultipath/foreign: libmultipath
mpathpersist multipathd: libmpathpersist
libmultipath/checkers.install \
libmultipath/prioritizers.install \
libmultipath/foreign.install: libmultipath.install
%.clean:
@$(MAKE) -C ${@:.clean=} clean
%.install: %
@$(MAKE) -C ${@:.install=} install
$(BUILDDIRS:=.uninstall):
@$(MAKE) -C ${@:.uninstall=} uninstall
# If config.mk is missing, "make clean" in subdir either fails, or tries to
# build it. Both is undesirable. Avoid it by creating config.mk temporarily.
clean:
@touch config.mk
$(Q)$(MAKE) $(BUILDDIRS:=.clean) tests.clean || true
$(Q)$(RM) -r abi abi.tar.gz abi-test compile_commands.json config.mk
install: $(BUILDDIRS:=.install)
uninstall: $(BUILDDIRS:=.uninstall)
test-progs: all
@$(MAKE) -C tests progs
test: all
@$(MAKE) -C tests all
valgrind-test: all
@$(MAKE) -C tests valgrind
.PHONY: TAGS
TAGS:
@etags -a libmultipath/*.c
@etags -a libmultipath/*.h
@etags -a multipathd/*.c
@etags -a multipathd/*.h
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化