Files
scst/srpt/Makefile
Bart Van Assche a169500590 Makefiles: Use KBUILD_EXTRA_SYMBOLS instead of copying Module.symvers
Copying Module.symvers is the oldest supported method for building external
kernel modules that depend on another external kernel module. Since support
for that method will be removed from Linux kernel v5.5, use
KBUILD_EXTRA_SYMBOLS instead to specify the external symbols SCST kernel
modules depend on. Support for KBUILD_EXTRA_SYMBOLS was introduced in
upstream kernel v2.6.26 so this patch drops support for kernels before
v2.6.26.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@8686 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2019-12-16 23:29:42 +00:00

300 lines
12 KiB
Makefile

#
# Makefile for ib_srpt.ko.
#
ifndef PREFIX
PREFIX=/usr/local
endif
SCST_DIR := $(shell echo "$$PWD")/../scst/src
ifeq ($(KVER),)
ifeq ($(KDIR),)
KVER := $(shell uname -r)
KDIR := /lib/modules/$(KVER)/build
else
ifeq ($(KERNELRELEASE),)
KVER := $(strip $(shell \
cat $(KDIR)/include/config/kernel.release 2>/dev/null || \
make -s -C $(KDIR) kernelversion))
else
KVER := $(KERNELRELEASE)
endif
endif
else
KDIR := /lib/modules/$(KVER)/build
endif
ifeq ($(INSTALL_MOD_PATH),)
export INSTALL_MOD_PATH := $(DESTDIR)
endif
INSTALL_DIR := $(INSTALL_MOD_PATH)/lib/modules/$(KVER)/extra
SRC_FILES=$(wildcard */*.[ch])
# The file Modules.symvers has been renamed in the 2.6.18 kernel to
# Module.symvers. Find out which name to use by looking in $(KDIR).
MODULE_SYMVERS:=$(shell if [ -e "$(KDIR)/Modules.symvers" ]; then \
echo Modules.symvers; else echo Module.symvers; fi)
# Name of the OFED kernel package.
OFED_KERNEL_IB_RPM:=$(shell for r in mlnx-ofa_kernel compat-rdma kernel-ib; do rpm -q $$r 2>/dev/null | grep -q "^$$r" && echo "$$r" && break; done)
OFED_KERNEL_IB_DEB:=$(shell for p in mlnx-ofed-kernel-dkms mlnx-ofed-kernel-modules; do dpkg-query -s "$$p" >/dev/null 2>&1 && echo "$$p" && break; done)
OFED_KERNEL_IB_PKG:=$(OFED_KERNEL_IB_RPM)$(OFED_KERNEL_IB_DEB)
# Name of the OFED kernel development package.
OFED_KERNEL_IB_DEVEL_RPM:=$(shell for r in mlnx-ofa_kernel-devel compat-rdma-devel kernel-ib-devel; do rpm -q $$r 2>/dev/null | grep -q "^$$r" && echo "$$r" && break; done)
OFED_KERNEL_IB_DEVEL_DEB:=$(shell for p in mlnx-ofed-kernel-dkms mlnx-ofed-kernel-modules; do dpkg-query -s "$$p" >/dev/null 2>&1 && echo "$$p" && break; done)
OFED_KERNEL_IB_DEVEL_PKG:=$(OFED_KERNEL_IB_DEVEL_RPM)$(OFED_KERNEL_IB_DEVEL_DEB)
OFED_FLAVOR=$(shell if [ -e /usr/bin/ofed_info ]; then /usr/bin/ofed_info 2>/dev/null | head -n1 | sed -n 's/^\(MLNX_OFED\|OFED-internal\).*/MOFED/p;s/^OFED-.*/OFED/p'; else echo in-tree; fi)
ifneq ($(OFED_KERNEL_IB_PKG),)
ifeq ($(OFED_KERNEL_IB_PKG),compat-rdma)
# OFED 3.x
OFED_KERNEL_DIR:=/usr/src/compat-rdma
OFED_CFLAGS:=-I$(OFED_KERNEL_DIR)/include
else
ifeq ($(OFED_FLAVOR),MOFED)
# Mellanox OFED with or without kernel-ib RPM. Since several MOFED backport
# header files use the LINUX_BACKPORT() macro without including
# <linux/compat-2.6.h>, include that header file explicitly.
OFED_KERNEL_DIR:=/usr/src/ofa_kernel/default
OFED_RPM_VERS=$(shell rpm -q --qf '%{version}\n' $(OFED_KERNEL_IB_DEVEL_RPM) 2>/dev/null | grep -v ' ')
OFED_DEB_VERS=$(shell dpkg-query -W --showformat='$${Version}\n' $(OFED_KERNEL_IB_DEVEL_DEB) 2>/dev/null)
OFED_VERS=$(OFED_RPM_VERS)$(OFED_DEB_VERS)
OFED_CFLAGS:=-I$(OFED_KERNEL_DIR)/include \
-I$(OFED_KERNEL_DIR)/include/uapi \
-include "linux/compat-2.6.h"
OFED_CFLAGS+=-DMOFED_MAJOR=$(shell echo "$(OFED_VERS)" | sed 's/\([0-9]\+\)[^0-9]\+\([0-9]\+\).*/\1/g')
OFED_CFLAGS+=-DMOFED_MINOR=$(shell echo "$(OFED_VERS)" | sed 's/\([0-9]\+\)[^0-9]\+\([0-9]\+\).*/\2/g')
OFED_CONFIG:=CONFIG_DTRACE=
else
# OFED 1.5
OFED_KERNEL_DIR:=/usr/src/ofa_kernel
include $(OFED_KERNEL_DIR)/config.mk
OFED_CFLAGS:=$(BACKPORT_INCLUDES) -I$(OFED_KERNEL_DIR)/include
endif
endif
# Any OFED version
OFED_MODULE_SYMVERS:=$(OFED_KERNEL_DIR)/$(MODULE_SYMVERS)
endif
# Use make instead of $(MAKE) to get rid of command-line option -i
run_conftest = $(shell if [ "0$(V)" -gt 0 ]; then output=/dev/stdout; else output=/dev/null; fi; if MAKEFLAGS= make -C $(KDIR) V=$(V) M="$(shell pwd)/conftest/$1" PRE_CFLAGS="-Werror $(OFED_CFLAGS)" $(OFED_CONFIG) 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)
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 $(CONFTEST_OUTPUTS)
$(MAKE) -C $(KDIR) M=$(shell pwd)/src PRE_CFLAGS="$(PRE_CFLAGS)"\
$(OFED_CONFIG) modules\
KBUILD_EXTRA_SYMBOLS="$(SCST_DIR)/$(MODULE_SYMVERS) $(OFED_MODULE_SYMVERS)"
install: all
@[ -z "$(DESTDIR)$(INSTALL_MOD_PATH)" ] && \
find /lib/modules/$(KVER) -name ib_srpt.ko -exec rm {} \; ; \
true
(cd src && KDIR=$(KDIR) ../../scripts/sign-modules)
$(MAKE) -C $(KDIR) M=$(shell pwd)/src PRE_CFLAGS="$(PRE_CFLAGS)" \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
CONFIG_MODULE_SIG_ALL= modules_install
uninstall:
rm -f $(INSTALL_DIR)/ib_srpt.ko
-/sbin/depmod -b $(INSTALL_MOD_PATH)/ -a $(KVER)
check:
@if [ -n "$(OFED_KERNEL_IB_PKG)" ]; then \
if [ -z "$(OFED_KERNEL_IB_DEVEL_PKG)" ]; then \
echo "Error: the OFED development package has not yet been" \
"installed."; \
false; \
else \
echo " Building against $(OFED_FLAVOR) $(OFED_KERNEL_IB_PKG)" \
"$(OFED_VERS) InfiniBand kernel headers."; \
fi \
else \
if [ -n "$(OFED_KERNEL_IB_DEVEL_PKG)" ]; then \
echo "Error: the OFED kernel package has not yet been" \
"installed."; \
false; \
else \
echo " Building against in-tree InfiniBand kernel headers."; \
fi; \
fi
clean:
rm -rf conftest/pre_cflags conftest/kcflags
for d in conftest/* src; do \
[ -d "$$d" ] && $(MAKE) -C $(KDIR) M=$(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/bad_wr_mod/result-$(KVER).txt: \
conftest/bad_wr_mod/bad_wr_mod.c \
conftest/bad_wr_mod/Makefile
echo "$(call run_conftest,bad_wr_mod, \
-DBAD_WR_MODIFIER=const,-DBAD_WR_MODIFIER=)" >"$@"
conftest/cm_event_mod/result-$(KVER).txt: \
conftest/cm_event_mod/cm_event_mod.c \
conftest/cm_event_mod/Makefile
echo "$(call run_conftest,cm_event_mod, \
-DCM_HANDLER_EVENT_MODIFIER=const,-DCM_HANDLER_EVENT_MODIFIER=)" >"$@"
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/dev_attr_max_send_sge/result-$(KVER).txt: \
conftest/dev_attr_max_send_sge/dev_attr_max_send_sge.c \
conftest/dev_attr_max_send_sge/Makefile
echo "$(call run_conftest_bool,dev_attr_max_send_sge, \
HAVE_DEV_ATTR_MAX_SEND_SGE)" >"$@"
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/ib_sg_dma_len/result-$(KVER).txt: \
conftest/ib_sg_dma_len/ib_sg_dma_len.c \
conftest/ib_sg_dma_len/Makefile
echo "$(call run_conftest_bool,ib_sg_dma_len,HAVE_IB_SG_DMA_LEN)" >"$@"
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/rdma_destroy_ah/result-$(KVER).txt: \
conftest/rdma_destroy_ah/rdma_destroy_ah.c \
conftest/rdma_destroy_ah/Makefile
echo "$(call run_conftest_bool,rdma_destroy_ah, \
HAVE_RDMA_DESTROY_AH)" >"$@"
conftest/rdma_destroy_ah_with_flags/result-$(KVER).txt: \
conftest/rdma_destroy_ah_with_flags/rdma_destroy_ah_with_flags.c\
conftest/rdma_destroy_ah_with_flags/Makefile
echo "$(call run_conftest_bool,rdma_destroy_ah_with_flags, \
HAVE_RDMA_DESTROY_AH_WITH_FLAGS)" >"$@"
conftest/rdma_query_gid/result-$(KVER).txt: \
conftest/rdma_query_gid/rdma_query_gid.c \
conftest/rdma_query_gid/Makefile
echo "$(call run_conftest_bool,rdma_query_gid,HAVE_RDMA_QUERY_GID)" >"$@"
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/srp_data_desc_imm/result-$(KVER).txt: \
conftest/srp_data_desc_imm/srp_data_desc_imm.c \
conftest/srp_data_desc_imm/Makefile
echo "$(call run_conftest_bool,srp_data_desc_imm, \
HAVE_SRP_DATA_DESC_IMM)" >"$@"
conftest/srp_login_req_rdma/result-$(KVER).txt: \
conftest/srp_login_req_rdma/srp_login_req_rdma.c \
conftest/srp_login_req_rdma/Makefile
echo "$(call run_conftest_bool,srp_login_req_rdma, \
HAVE_STRUCT_SRP_LOGIN_REQ_RDMA)" >"$@"
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)" >"$@"
release-archive:
../scripts/generate-release-archive srpt "$$(sed -n 's/^#define[[:blank:]]DRV_VERSION[[:blank:]]*\"\([^\"]*\)\".*/\1/p' src/ib_srpt.c)"
kerneldoc.html: $(SRC_FILES)
$(KDIR)/scripts/kernel-doc -html $(SRC_FILES) >$@
.PHONY: all install clean extraclean