From a16950059055d48c02c9c8e940d0e9187d750fc0 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Mon, 16 Dec 2019 23:29:42 +0000 Subject: [PATCH] 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 --- fcst/Makefile | 8 +++----- iscsi-scst/Makefile | 19 ++++++++----------- qla2x00t-32gbit/qla2x00-target/Makefile | 16 +++------------- qla2x00t/qla2x00-target/Makefile | 19 +++++-------------- scst/src/Makefile | 3 ++- scst_local/Makefile | 8 +++----- srpt/Makefile | 10 ++++------ 7 files changed, 28 insertions(+), 55 deletions(-) diff --git a/fcst/Makefile b/fcst/Makefile index 754dfcff5..354ab7551 100644 --- a/fcst/Makefile +++ b/fcst/Makefile @@ -67,8 +67,9 @@ SCST_DIR := $(shell echo "$$PWD")/../scst/src MODULE_SYMVERS:=$(shell if [ -e "$(KDIR)/Modules.symvers" ]; then \ echo Modules.symvers; else echo Module.symvers; fi) -all: $(MODULE_SYMVERS) - $(MAKE) -C $(KDIR) M=$(shell pwd) +all: + $(MAKE) -C $(KDIR) M=$(shell pwd) \ + KBUILD_EXTRA_SYMBOLS=$(SCST_DIR)/$(MODULE_SYMVERS) install: all KDIR=$(KDIR) ../scripts/sign-modules @@ -80,9 +81,6 @@ ins: ./config insmod fcst.ko -$(MODULE_SYMVERS): $(SCST_DIR)/$(MODULE_SYMVERS) - cp $< $@ - uninstall: rm -f $(INSTALL_DIR)/$(MODULE_NAME).ko -/sbin/depmod -b $(INSTALL_MOD_PATH)/ -a $(KVER) diff --git a/iscsi-scst/Makefile b/iscsi-scst/Makefile index 48e0fef65..9e3731144 100644 --- a/iscsi-scst/Makefile +++ b/iscsi-scst/Makefile @@ -51,7 +51,7 @@ MODULE_SYMVERS:=$(shell if [ -e "$(KDIR)/Modules.symvers" ]; then \ all: progs mods -ISER_SYMVERS:=$(KMOD)/$(MODULE_SYMVERS) +ISER_SYMVERS:=$(SCST_DIR)/$(MODULE_SYMVERS) $(KMOD)/$(MODULE_SYMVERS) OFED_CFLAGS:= 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) @@ -84,7 +84,7 @@ ifeq ($(OFED_FLAVOR),MOFED) -include $(OFED_DIR)/include/linux/compat-2.6.h \ -DMOFED_MAJOR=$(shell echo $(OFED_VERS) | cut -f1 -d.)\ -DMOFED_MINOR=$(shell echo $(OFED_VERS) | cut -f2 -d.) - ISER_SYMVERS:="$(ISER_SYMVERS) $(OFED_DIR)/$(MODULE_SYMVERS)" + ISER_SYMVERS:=$(ISER_SYMVERS) $(OFED_DIR)/$(MODULE_SYMVERS) OFED_CONFIG:= CONFIG_DTRACE= else # Whether or not the OFED kernel-ib-devel RPM has been installed. @@ -98,12 +98,12 @@ else # BACKPORT_INCLUDES. include /usr/src/ofa_kernel/config.mk OFED_CFLAGS:=$(shell echo $(BACKPORT_INCLUDES) -I/usr/src/ofa_kernel/include) - ISER_SYMVERS:="$(ISER_SYMVERS) /usr/src/ofa_kernel/$(MODULE_SYMVERS)" + ISER_SYMVERS:=$(ISER_SYMVERS) /usr/src/ofa_kernel/$(MODULE_SYMVERS) endif ifeq ($(OFED_COMPAT_RDMA_DEVEL_RPM_INSTALLED),true) OFED_CFLAGS:=-I/usr/src/compat-rdma/include -include /usr/src/compat-rdma/include/linux/compat-2.6.h - ISER_SYMVERS:="$(ISER_SYMVERS) /usr/src/compat-rdma/$(MODULE_SYMVERS)" + ISER_SYMVERS:=$(ISER_SYMVERS) /usr/src/compat-rdma/$(MODULE_SYMVERS) endif endif @@ -124,13 +124,14 @@ PRE_CFLAGS = $(shell \ ISER_CFLAGS = $(OFED_CFLAGS) -DOFED_FLAVOR=$(OFED_FLAVOR) $(PRE_CFLAGS) -mods: include/iscsi_scst_itf_ver.h $(MODULE_SYMVERS) $(CONFTEST_OUTPUTS) - $(MAKE) -C $(KDIR) M=$(KMOD) PRE_CFLAGS="$(PRE_CFLAGS)" modules +mods: include/iscsi_scst_itf_ver.h $(CONFTEST_OUTPUTS) + $(MAKE) -C $(KDIR) M=$(KMOD) PRE_CFLAGS="$(PRE_CFLAGS)" modules \ + KBUILD_EXTRA_SYMBOLS=$(SCST_DIR)/$(MODULE_SYMVERS) echo "$@: INFINIBAND_ENABLED = $(INFINIBAND_ENABLED)" if $(INFINIBAND_ENABLED); then \ echo " Building against $(OFED_FLAVOR) InfiniBand kernel headers."; \ $(MAKE) -C $(KDIR) M=$(ISERTMOD) PRE_CFLAGS="$(ISER_CFLAGS)" \ - KBUILD_EXTRA_SYMBOLS=$(ISER_SYMVERS) $(OFED_CONFIG) modules; \ + KBUILD_EXTRA_SYMBOLS="$(ISER_SYMVERS)" $(OFED_CONFIG) modules; \ fi progs: include/iscsi_scst_itf_ver.h @@ -171,10 +172,6 @@ uninstall: $(INSTALL_DIR)/isert-scst.ko -/sbin/depmod -b $(INSTALL_MOD_PATH)/ -a $(KVER) -$(MODULE_SYMVERS): $(SCST_DIR)/$(MODULE_SYMVERS) - cp $< kernel/ - if $(INFINIBAND_ENABLED); then cp $< kernel/isert-scst; fi - clean: $(MAKE) -C usr $@ $(MAKE) -C $(KDIR) M=$(KMOD) $@ diff --git a/qla2x00t-32gbit/qla2x00-target/Makefile b/qla2x00t-32gbit/qla2x00-target/Makefile index 2c883f1db..cfd3c7dfd 100644 --- a/qla2x00t-32gbit/qla2x00-target/Makefile +++ b/qla2x00t-32gbit/qla2x00-target/Makefile @@ -84,18 +84,14 @@ INSTALL_DIR := $(INSTALL_MOD_PATH)/lib/modules/$(KVER)/extra SCST_DIR := $(shell echo "$$PWD/../../scst/src") -ifneq ($(BUILD_2X_MODULE),) -# We need to make qla2xxx_scst before Module.symvers -.NOTPARALLEL: -endif - # 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) -all: $(QLA2XXX_SCST) $(MODULE_SYMVERS) - $(MAKE) -C $(KDIR) M=$(shell pwd) +all: $(QLA2XXX_SCST) + $(MAKE) -C $(KDIR) M=$(shell pwd) \ + KBUILD_EXTRA_SYMBOLS="$(SCST_DIR)/$(MODULE_SYMVERS) $(QLA2XXX_DIR)/$(MODULE_SYMVERS)" install: all ifneq ($(BUILD_2X_MODULE),) @@ -119,12 +115,6 @@ qla2xxx_scst: M=$(QLA2XXX_DIR) -C $(QLA2XXX_DIR) all endif -$(MODULE_SYMVERS): $(SCST_DIR)/$(MODULE_SYMVERS) - cp $< . -ifneq ($(BUILD_2X_MODULE),) - cat $(QLA2XXX_DIR)/$(MODULE_SYMVERS) >>$(MODULE_SYMVERS) -endif - ########## END OUT-OF-TREE RULES ########## endif diff --git a/qla2x00t/qla2x00-target/Makefile b/qla2x00t/qla2x00-target/Makefile index 37afcab6a..f97b1213c 100644 --- a/qla2x00t/qla2x00-target/Makefile +++ b/qla2x00t/qla2x00-target/Makefile @@ -83,18 +83,14 @@ INSTALL_DIR := $(INSTALL_MOD_PATH)/lib/modules/$(KVER)/extra SCST_DIR := $(shell echo "$$PWD/../../scst/src") -ifneq ($(BUILD_2X_MODULE),) -# We need to make qla2xxx_scst before Module.symvers -.NOTPARALLEL: -endif - # 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) -all: $(QLA2XXX_SCST) $(MODULE_SYMVERS) - $(MAKE) -C $(KDIR) M=$(shell pwd) +all: $(QLA2XXX_SCST) + $(MAKE) -C $(KDIR) M=$(shell pwd) \ + KBUILD_EXTRA_SYMBOLS="$(SCST_DIR)/$(MODULE_SYMVERS) $(QLA2XXX_DIR)/$(MODULE_SYMVERS)" install: all ifneq ($(BUILD_2X_MODULE),) @@ -115,13 +111,8 @@ endif ifneq ($(BUILD_2X_MODULE),) qla2xxx_scst: $(MAKE) BUILD_2X_MODULE=$(BUILD_2X_MODULE) CONFIG_SCSI_QLA2XXX_TARGET=y \ - M=$(QLA2XXX_DIR) -C $(QLA2XXX_DIR) all -endif - -$(MODULE_SYMVERS): $(SCST_DIR)/$(MODULE_SYMVERS) - cp $< . -ifneq ($(BUILD_2X_MODULE),) - cat $(QLA2XXX_DIR)/$(MODULE_SYMVERS) >>$(MODULE_SYMVERS) + M=$(QLA2XXX_DIR) -C $(QLA2XXX_DIR) all \ + KBUILD_EXTRA_SYMBOLS=$(QLA2XXX_DIR)/$(MODULE_SYMVERS) endif ########## END OUT-OF-TREE RULES ########## diff --git a/scst/src/Makefile b/scst/src/Makefile index dbf687e84..621d089a1 100644 --- a/scst/src/Makefile +++ b/scst/src/Makefile @@ -115,7 +115,8 @@ $(SCST_INTF_VER_FILE): $(SCST_INC_DIR)/scst.h $(SCST_INC_DIR)/scst_const.h $(SCS all: $(SCST_INTF_VER_FILE) $(MAKE) -C certs KDIR=$(KDIR) - $(MAKE) -C $(KDIR) M=$(shell pwd) BUILD_DEV=m + $(MAKE) -C $(KDIR) M=$(shell pwd) BUILD_DEV=m \ + KBUILD_EXTRA_SYMBOLS=$(SCST_DIR)/$(MODULE_SYMVERS) scst: $(MAKE) -C $(KDIR) M=$(shell pwd) BUILD_DEV=n diff --git a/scst_local/Makefile b/scst_local/Makefile index f6a62aa75..bddd76198 100644 --- a/scst_local/Makefile +++ b/scst_local/Makefile @@ -47,8 +47,9 @@ SCST_DIR := $(shell echo "$$PWD")/../scst/src MODULE_SYMVERS:=$(shell if [ -e "$(KDIR)/Modules.symvers" ]; then \ echo Modules.symvers; else echo Module.symvers; fi) -all: $(MODULE_SYMVERS) - $(MAKE) -C $(KDIR) M=$(shell pwd) +all: + $(MAKE) -C $(KDIR) M=$(shell pwd) \ + KBUILD_EXTRA_SYMBOLS=$(SCST_DIR)/$(MODULE_SYMVERS) install: all KDIR=$(KDIR) ../scripts/sign-modules @@ -56,9 +57,6 @@ install: all $$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \ CONFIG_MODULE_SIG_ALL= modules_install -$(MODULE_SYMVERS): $(SCST_DIR)/$(MODULE_SYMVERS) - cp $< $@ - uninstall: rm -f $(INSTALL_DIR)/scst_local.ko -/sbin/depmod -b $(INSTALL_MOD_PATH)/ -a $(KVER) diff --git a/srpt/Makefile b/srpt/Makefile index c6084fc98..837bef3a0 100644 --- a/srpt/Makefile +++ b/srpt/Makefile @@ -97,12 +97,10 @@ PRE_CFLAGS = $(OFED_CFLAGS) \ cat $$t/result-$(KVER).txt 2>/dev/null; \ done) -all: check src/$(MODULE_SYMVERS) $(CONFTEST_OUTPUTS) - $(MAKE) -C $(KDIR) M=$(shell pwd)/src PRE_CFLAGS="$(PRE_CFLAGS)" $(OFED_CONFIG) modules - -src/$(MODULE_SYMVERS): $(SCST_DIR)/$(MODULE_SYMVERS) $(OFED_MODULE_SYMVERS) - cat $^ | \ - awk '{sym[$$2]=$$0} END {for (s in sym){print sym[s]}}' >"$@" +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)" ] && \