mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-22 05:01:27 +00:00
ib_srpt: Optimize Makefile
Cache conftest results and enable parallel invocation of conftests. git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7127 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
171
srpt/Makefile
171
srpt/Makefile
@@ -1,6 +1,7 @@
|
||||
#
|
||||
# Makefile for ib_srpt.ko.
|
||||
#
|
||||
|
||||
ifndef PREFIX
|
||||
PREFIX=/usr/local
|
||||
endif
|
||||
@@ -86,55 +87,30 @@ endif
|
||||
OFED_MODULE_SYMVERS:=$(OFED_KERNEL_DIR)/$(MODULE_SYMVERS)
|
||||
endif
|
||||
|
||||
GOALS:=$(if $(MAKECMDGOALS),$(MAKECMDGOALS),all)
|
||||
OTHER_GOALS:=$(foreach goal,$(MAKECMDGOALS),$(subst all,,$(goal)))
|
||||
# echo:=$(shell echo 'GOALS = $(GOALS)' >&2)
|
||||
# echo:=$(shell echo 'OTHER_GOALS = $(OTHER_GOALS)' >&2)
|
||||
ifneq ("$(GOALS)","$(OTHER_GOALS)")
|
||||
run_conftest = $(shell if [ "0$(V)" -gt 0 ]; then output=/dev/stdout; else output=/dev/null; fi; if $(MAKE) -C $(KDIR) V=$(V) SUBDIRS="$(shell pwd)/conftest/$1" PRE_CFLAGS="-Werror $(OFED_CFLAGS)" 1>&2 2>$${output}; then echo "$2"; else echo "$3"; fi)
|
||||
USE_PRE_440_WR_STRUCTURE := $(call run_conftest,use_pre_440_wr_structure,-DUSE_PRE_440_WR_STRUCTURE)
|
||||
CREATE_CQ_FLAG := $(call run_conftest,create_cq,-DIB_CREATE_CQ_HAS_INIT_ATTR)
|
||||
CREATE_SEND_MAD_AH_FLAG := $(call run_conftest,create_send_mad_ah,-DCREATE_SEND_MAD_HAS_AH_ARG)
|
||||
ifeq ($(CREATE_SEND_MAD_AH_FLAG),)
|
||||
CREATE_SEND_MAD_BASE_FLAG := $(call run_conftest,create_send_mad_base,-DCREATE_SEND_MAD_HAS_BASE_ARG)
|
||||
endif
|
||||
CLIENT_REMOVE := $(call run_conftest,ib_client_remove,-DIB_CLIENT_REMOVE_TAKES_TWO_ARGS)
|
||||
CM_LISTEN := $(call run_conftest,cm_listen,-DIB_CM_LISTEN_TAKES_FOURTH_ARG)
|
||||
MAD_HANDLER_TAKES_SEND_BUF := $(call run_conftest,mad_handler_takes_send_buf,-DMAD_HANDLER_TAKES_SEND_BUF)
|
||||
HAVE_IB_DMA_MAP_OPS := $(call run_conftest,ib_dma_map_ops,-DHAVE_IB_DMA_MAP_OPS)
|
||||
HAVE_IB_SET_CPI_RESP_TIME := $(call run_conftest,ib_set_cpi_resp_time,-DHAVE_IB_SET_CPI_RESP_TIME)
|
||||
GID_CHANGE_FLAG := $(call run_conftest,gid_change,-DHAVE_IB_EVENT_GID_CHANGE)
|
||||
PD_HAS_LOCAL_DMA_LKEY := $(call run_conftest,pd_has_local_dma_lkey,-DIB_PD_HAS_LOCAL_DMA_LKEY)
|
||||
RDMA_CREATE_ID := $(call run_conftest,rdma_create_id_net,-DRDMA_CREATE_ID_TAKES_NET_ARG=1,-DRDMA_CREATE_ID_TAKES_NET_ARG=0)
|
||||
REGISTER_MAD_AGENT_FLAG := $(call run_conftest,register_mad_agent,-DREGISTER_MAD_AGENT_HAS_FLAGS_ARG)
|
||||
QUERY_DEVICE := $(call run_conftest,query_device,-DHAVE_IB_QUERY_DEVICE)
|
||||
QUERY_DEVICE_HAS_ATTR_ARG := $(call run_conftest,query_device_attr_arg,-DIB_QUERY_DEVICE_HAS_ATTR_ARG)
|
||||
QUERY_GID_FLAG := $(call run_conftest,query_gid,-DIB_QUERY_GID_HAS_ATTR_ARG)
|
||||
PRE_CFLAGS=$(OFED_CFLAGS) \
|
||||
$(USE_PRE_440_WR_STRUCTURE) \
|
||||
$(CLIENT_REMOVE) \
|
||||
$(CREATE_CQ_FLAG) \
|
||||
$(CREATE_SEND_MAD_AH_FLAG) \
|
||||
$(CREATE_SEND_MAD_BASE_FLAG) \
|
||||
$(IB_CLIENT_REMOVE_TAKES_TWO_ARGS) \
|
||||
$(CM_LISTEN) \
|
||||
$(MAD_HANDLER_TAKES_SEND_BUF) \
|
||||
$(HAVE_IB_DMA_MAP_OPS) \
|
||||
$(HAVE_IB_SET_CPI_RESP_TIME) \
|
||||
$(GID_CHANGE_FLAG) \
|
||||
$(PD_HAS_LOCAL_DMA_LKEY) \
|
||||
$(RDMA_CREATE_ID) \
|
||||
$(REGISTER_MAD_AGENT_FLAG) \
|
||||
$(QUERY_GID_FLAG) \
|
||||
$(QUERY_DEVICE) \
|
||||
$(QUERY_DEVICE_HAS_ATTR_ARG) \
|
||||
-DOFED_FLAVOR=$(OFED_FLAVOR)
|
||||
endif
|
||||
run_conftest = $(shell if [ "0$(V)" -gt 0 ]; then output=/dev/stdout; else output=/dev/null; fi; if $(MAKE) -C $(KDIR) V=$(V) SUBDIRS="$(shell pwd)/conftest/$1" PRE_CFLAGS="-Werror $(OFED_CFLAGS)" 1>&2 2>$${output}; then echo "$(strip $2)"; else echo "$(strip $3)"; fi)
|
||||
run_conftest_bool = $(call run_conftest,$1,-D$(strip $2)=1,-D$(strip $2)=0)
|
||||
|
||||
all: src/$(MODULE_SYMVERS)
|
||||
CONFTESTS = $(shell ls -d conftest/*)
|
||||
CONFTEST_OUTPUTS = $(shell \
|
||||
for t in $(CONFTESTS); do \
|
||||
echo $$t/result-$(KVER).txt; \
|
||||
done)
|
||||
|
||||
PRE_CFLAGS = $(OFED_CFLAGS) \
|
||||
-DOFED_FLAVOR=$(OFED_FLAVOR) \
|
||||
$(shell for t in $(CONFTESTS); do \
|
||||
cat $$t/result-$(KVER).txt 2>/dev/null; \
|
||||
done)
|
||||
|
||||
all: check src/$(MODULE_SYMVERS) $(CONFTEST_OUTPUTS)
|
||||
$(MAKE) -C $(KDIR) SUBDIRS=$(shell pwd)/src \
|
||||
PRE_CFLAGS="$(PRE_CFLAGS)" SCST_INC_DIR=$(SCST_INC_DIR) modules
|
||||
|
||||
src/$(MODULE_SYMVERS): $(SCST_SYMVERS_DIR)/$(MODULE_SYMVERS) \
|
||||
$(OFED_MODULE_SYMVERS)
|
||||
cat $^ | \
|
||||
awk '{sym[$$2]=$$0} END {for (s in sym){print sym[s]}}' >"$@"
|
||||
|
||||
install: all
|
||||
@[ -z "$(DESTDIR)$(INSTALL_MOD_PATH)" ] && \
|
||||
find /lib/modules/$(KVER) -name ib_srpt.ko -exec rm {} \; ; \
|
||||
@@ -148,8 +124,7 @@ uninstall:
|
||||
rm -f $(INSTALL_DIR)/ib_srpt.ko
|
||||
-/sbin/depmod -b $(INSTALL_MOD_PATH)/ -a $(KVER)
|
||||
|
||||
src/$(MODULE_SYMVERS): $(SCST_SYMVERS_DIR)/$(MODULE_SYMVERS) \
|
||||
$(OFED_MODULE_SYMVERS)
|
||||
check:
|
||||
@if [ -n "$(OFED_KERNEL_IB_RPM)" ]; then \
|
||||
if [ -z "$(OFED_KERNEL_IB_DEVEL_RPM)" ]; then \
|
||||
echo "Error: the OFED package $(OFED_KERNEL_IB_RPM)-devel has" \
|
||||
@@ -158,14 +133,6 @@ src/$(MODULE_SYMVERS): $(SCST_SYMVERS_DIR)/$(MODULE_SYMVERS) \
|
||||
else \
|
||||
echo " Building against $(OFED_FLAVOR) $(OFED_KERNEL_IB_RPM)" \
|
||||
"InfiniBand kernel headers."; \
|
||||
( \
|
||||
cat $(SCST_SYMVERS_DIR)/$(MODULE_SYMVERS) | \
|
||||
grep -v 'drivers/infiniband/' | \
|
||||
grep -v 'net/sunrpc/xprtrdma/' | \
|
||||
grep -v 'net/rds/' | \
|
||||
grep -v 'extra/ib_srpt'; \
|
||||
cat $(OFED_MODULE_SYMVERS) \
|
||||
) >$@; \
|
||||
fi \
|
||||
else \
|
||||
if [ -n "$(OFED_KERNEL_IB_DEVEL_RPM)" ]; then \
|
||||
@@ -174,7 +141,6 @@ src/$(MODULE_SYMVERS): $(SCST_SYMVERS_DIR)/$(MODULE_SYMVERS) \
|
||||
false; \
|
||||
else \
|
||||
echo " Building against in-tree InfiniBand kernel headers."; \
|
||||
cp $< $@; \
|
||||
fi; \
|
||||
fi
|
||||
|
||||
@@ -182,12 +148,105 @@ clean:
|
||||
rm -rf conftest/pre_cflags conftest/kcflags
|
||||
for d in conftest/* src; do \
|
||||
[ -d "$$d" ] && $(MAKE) -C $(KDIR) SUBDIRS=$(shell pwd)/$$d clean; \
|
||||
rm -f $$d/result*.txt; \
|
||||
done
|
||||
rm -f src/$(MODULE_SYMVERS) src/Module.markers src/modules.order
|
||||
|
||||
extraclean: clean
|
||||
rm -f *.orig *.rej
|
||||
|
||||
conftest/cm_listen/result-$(KVER).txt: \
|
||||
conftest/cm_listen/cm_listen.c \
|
||||
conftest/cm_listen/Makefile
|
||||
echo "$(call run_conftest,cm_listen, \
|
||||
-DIB_CM_LISTEN_TAKES_FOURTH_ARG)" >"$@"
|
||||
|
||||
conftest/create_cq/result-$(KVER).txt: \
|
||||
conftest/create_cq/create_cq.c \
|
||||
conftest/create_cq/Makefile
|
||||
echo "$(call run_conftest,create_cq, \
|
||||
-DIB_CREATE_CQ_HAS_INIT_ATTR)" >"$@"
|
||||
|
||||
conftest/create_send_mad_ah/result-$(KVER).txt: \
|
||||
conftest/create_send_mad_ah/create_send_mad_ah.c \
|
||||
conftest/create_send_mad_ah/Makefile
|
||||
echo "$(call run_conftest,create_send_mad_ah, \
|
||||
-DCREATE_SEND_MAD_HAS_AH_ARG)" >"$@"
|
||||
|
||||
conftest/create_send_mad_base/result-$(KVER).txt: \
|
||||
conftest/create_send_mad_base/create_send_mad_base.c \
|
||||
conftest/create_send_mad_base/Makefile
|
||||
echo "$(call run_conftest,create_send_mad_base, \
|
||||
-DCREATE_SEND_MAD_HAS_BASE_ARG)" >"$@"
|
||||
|
||||
conftest/gid_change/result-$(KVER).txt: \
|
||||
conftest/gid_change/gid_change.c \
|
||||
conftest/gid_change/Makefile
|
||||
echo "$(call run_conftest,gid_change,-DHAVE_IB_EVENT_GID_CHANGE)" >"$@"
|
||||
|
||||
conftest/ib_client_remove/result-$(KVER).txt: \
|
||||
conftest/ib_client_remove/ib_client_remove.c \
|
||||
conftest/ib_client_remove/Makefile
|
||||
echo "$(call run_conftest,ib_client_remove, \
|
||||
-DIB_CLIENT_REMOVE_TAKES_TWO_ARGS)" >"$@"
|
||||
|
||||
conftest/ib_dma_map_ops/result-$(KVER).txt: \
|
||||
conftest/ib_dma_map_ops/ib_dma_map_ops.c \
|
||||
conftest/ib_dma_map_ops/Makefile
|
||||
echo "$(call run_conftest,ib_dma_map_ops,-DHAVE_IB_DMA_MAP_OPS)" >"$@"
|
||||
|
||||
conftest/ib_set_cpi_resp_time/result-$(KVER).txt: \
|
||||
conftest/ib_set_cpi_resp_time/ib_set_cpi_resp_time.c \
|
||||
conftest/ib_set_cpi_resp_time/Makefile
|
||||
echo "$(call run_conftest,ib_set_cpi_resp_time, \
|
||||
-DHAVE_IB_SET_CPI_RESP_TIME)" >"$@"
|
||||
|
||||
conftest/mad_handler_takes_send_buf/result-$(KVER).txt: \
|
||||
conftest/mad_handler_takes_send_buf/mad_handler_takes_send_buf.c\
|
||||
conftest/mad_handler_takes_send_buf/Makefile
|
||||
echo "$(call run_conftest,mad_handler_takes_send_buf, \
|
||||
-DMAD_HANDLER_TAKES_SEND_BUF)" >"$@"
|
||||
|
||||
conftest/pd_has_local_dma_lkey/result-$(KVER).txt: \
|
||||
conftest/pd_has_local_dma_lkey/pd_has_local_dma_lkey.c \
|
||||
conftest/pd_has_local_dma_lkey/Makefile
|
||||
echo "$(call run_conftest,pd_has_local_dma_lkey, \
|
||||
-DIB_PD_HAS_LOCAL_DMA_LKEY)" >"$@"
|
||||
|
||||
conftest/query_device/result-$(KVER).txt: \
|
||||
conftest/query_device/query_device.c \
|
||||
conftest/query_device/Makefile
|
||||
echo "$(call run_conftest,query_device,-DHAVE_IB_QUERY_DEVICE)" >"$@"
|
||||
|
||||
conftest/query_device_attr_arg/result-$(KVER).txt: \
|
||||
conftest/query_device_attr_arg/query_device_attr_arg.c \
|
||||
conftest/query_device_attr_arg/Makefile
|
||||
echo "$(call run_conftest,query_device_attr_arg, \
|
||||
-DIB_QUERY_DEVICE_HAS_ATTR_ARG)" >"$@"
|
||||
|
||||
conftest/query_gid/result-$(KVER).txt: \
|
||||
conftest/query_gid/query_gid.c \
|
||||
conftest/query_gid/Makefile
|
||||
echo "$(call run_conftest,query_gid,-DIB_QUERY_GID_HAS_ATTR_ARG)" >"$@"
|
||||
|
||||
conftest/rdma_create_id_net/result-$(KVER).txt: \
|
||||
conftest/rdma_create_id_net/rdma_create_id_net.c \
|
||||
conftest/rdma_create_id_net/Makefile
|
||||
echo "$(call run_conftest_bool,rdma_create_id_net, \
|
||||
RDMA_CREATE_ID_TAKES_NET_ARG)" >"$@"
|
||||
|
||||
conftest/register_mad_agent/result-$(KVER).txt: \
|
||||
conftest/register_mad_agent/register_mad_agent.c \
|
||||
conftest/register_mad_agent/Makefile
|
||||
echo "$(call run_conftest,register_mad_agent, \
|
||||
-DREGISTER_MAD_AGENT_HAS_FLAGS_ARG)" >"$@"
|
||||
|
||||
conftest/use_pre_440_wr_structure/result-$(KVER).txt: \
|
||||
conftest/use_pre_440_wr_structure/use_pre_440_wr_structure.c \
|
||||
conftest/use_pre_440_wr_structure/Makefile
|
||||
echo "$(call run_conftest,use_pre_440_wr_structure, \
|
||||
-DUSE_PRE_440_WR_STRUCTURE)" >"$@"
|
||||
|
||||
2debug:
|
||||
-$(MAKE) clean
|
||||
$(call set_var,build_mode,BUILDMODE,)
|
||||
|
||||
Reference in New Issue
Block a user