Restore support for building with clang

The previous commit removed support for building with clang. Restore support
for building with clang without breaking cross-compilation support.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9209 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Bart Van Assche
2020-12-05 21:23:17 +00:00
parent 8eb850acce
commit d10a7bf5d5
11 changed files with 75 additions and 27 deletions

19
README.clang Normal file
View File

@@ -0,0 +1,19 @@
Building SCST With Clang
========================
Clang is a C compiler that is an alternative for gcc. SCST can be built as
follows with clang:
1. Install clang.
2. Download the Linux kernel source code and also the SCST source code.
3. Build at least the modules_prepare Linux kernel make target.
cd $HOME/software/linux-kernel
make CC=clang modules_prepare
5. Build SCST using any of the supported build methods. An example:
export KDIR=$HOME/software/linux-kernel
export PASS_CC_TO_MAKE=1
export CC=clang
cd scst.git
make rpm

View File

@@ -60,12 +60,14 @@ INSTALL_DIR := $(INSTALL_MOD_PATH)/lib/modules/$(KVER)/extra
SCST_DIR := $(shell echo "$$PWD")/../scst/src
all:
$(MAKE) -C $(KDIR) M=$(shell pwd)
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)")
install: all
KDIR=$(KDIR) ../scripts/sign-modules
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
CONFIG_MODULE_SIG_ALL= modules_install
ins:

View File

@@ -111,6 +111,7 @@ run_conftest = $(shell \
output=conftest/$1/build-output-$(KVER).txt; \
fi; \
if MAKEFLAGS= make -C $(KDIR) V=$(V) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
M="$(shell pwd)/conftest/$1" \
CONFTEST_CFLAGS="-Werror $(OFED_CFLAGS)" $(OFED_CONFIG) \
KBUILD_EXTRA_SYMBOLS="$(OFED_MODULE_SYMVERS)" \
@@ -136,11 +137,13 @@ ISER_CFLAGS = $(OFED_CFLAGS) -DOFED_FLAVOR=$(OFED_FLAVOR) $(CONFTEST_CFLAGS)
mods: include/iscsi_scst_itf_ver.h $(CONFTEST_OUTPUTS)
$(MAKE) -C $(KDIR) M=$(KMOD) CONFTEST_CFLAGS="$(CONFTEST_CFLAGS)"\
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
modules
echo "$@: INFINIBAND_ENABLED = $(INFINIBAND_ENABLED)"
if $(INFINIBAND_ENABLED); then \
echo " Building against $(OFED_FLAVOR) RDMA kernel headers.";\
$(MAKE) -C $(KDIR) M=$(ISERTMOD) ISER_CFLAGS="$(ISER_CFLAGS)" \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
$(OFED_CONFIG) modules; \
fi
@@ -161,15 +164,17 @@ install: all
@install -vD -m 755 usr/iscsi-scst-adm $(DESTDIR)$(SBINDIR)/iscsi-scst-adm
@install -vD -m 644 doc/manpages/iscsi-scst-adm.8 $(DESTDIR)$(MANDIR)/man8/iscsi-scst-adm.8
(cd $(KMOD) && KDIR=$(KDIR) ../../scripts/sign-modules)
$(MAKE) -C $(KDIR) M=$(KMOD) \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
$(MAKE) -C $(KDIR) M=$(KMOD) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
CONFIG_MODULE_SIG_ALL= modules_install
echo "$@: INFINIBAND_ENABLED = $(INFINIBAND_ENABLED)"
if $(INFINIBAND_ENABLED); then \
if $(INFINIBAND_ENABLED); then \
(cd $(ISERTMOD) && KDIR=$(KDIR) ../../../scripts/sign-modules);\
$(MAKE) -C $(KDIR) M=$(ISERTMOD) \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
CONFIG_MODULE_SIG_ALL= modules_install; \
$(MAKE) -C $(KDIR) M=$(ISERTMOD) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
CONFIG_MODULE_SIG_ALL= modules_install; \
fi
uninstall:

View File

@@ -48,11 +48,13 @@ INSTALL_DIR := $(INSTALL_MOD_PATH)/lib/modules/$(KVER)/extra
all:
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
$(CONFIG_SCSI_QLA2XXX_TARGET)=CONFIG_SCSI_QLA2XXX_TARGET
install: all
KDIR=$(KDIR) ../scripts/sign-modules
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
CONFIG_MODULE_SIG_ALL= modules_install

View File

@@ -67,15 +67,17 @@ INSTALL_DIR := $(INSTALL_MOD_PATH)/lib/modules/$(KVER)/extra
SCST_DIR := $(shell echo "$$PWD/../../scst/src")
all: $(QLA2XXX_SCST)
$(MAKE) -C $(KDIR) M=$(shell pwd)
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)")
install: all
ifneq ($(BUILD_2X_MODULE),)
$(MAKE) M=$(QLA2XXX_DIR) -C $(QLA2XXX_DIR) $@
endif
KDIR=$(KDIR) ../../scripts/sign-modules
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
CONFIG_MODULE_SIG_ALL= modules_install
uninstall:

View File

@@ -47,11 +47,13 @@ INSTALL_DIR := $(INSTALL_MOD_PATH)/lib/modules/$(KVER)/extra
all:
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
$(CONFIG_SCSI_QLA2XXX_TARGET)=CONFIG_SCSI_QLA2XXX_TARGET
install: all
KDIR=$(KDIR) ../scripts/sign-modules
$(MAKE) -C $(KDIR) M=$(shell pwd) BUILD_INI=m \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
CONFIG_MODULE_SIG_ALL= modules_install

View File

@@ -66,15 +66,17 @@ INSTALL_DIR := $(INSTALL_MOD_PATH)/lib/modules/$(KVER)/extra
SCST_DIR := $(shell echo "$$PWD/../../scst/src")
all: $(QLA2XXX_SCST)
$(MAKE) -C $(KDIR) M=$(shell pwd)
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)")
install: all
ifneq ($(BUILD_2X_MODULE),)
$(MAKE) M=$(QLA2XXX_DIR) -C $(QLA2XXX_DIR) $@
endif
KDIR=$(KDIR) ../../scripts/sign-modules
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
CONFIG_MODULE_SIG_ALL= modules_install
uninstall:

View File

@@ -71,12 +71,16 @@ $(SCST_INTF_VER_FILE): $(SCST_INC_DIR)/scst.h $(SCST_INC_DIR)/scst_const.h $(SCS
echo "\"`sha1sum $(SCST_INC_DIR)/scst_user.h|awk '{printf $$1}'`\"" >>$(SCST_INTF_VER_FILE)
all: $(SCST_INTF_VER_FILE)
$(MAKE) -C certs KDIR=$(KDIR)
$(MAKE) -C $(KDIR) M=$(shell pwd)
$(MAKE) -C $(KDIR) M=$(shell pwd)/dev_handlers
$(MAKE) -C certs KDIR=$(KDIR) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)")
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)")
$(MAKE) -C $(KDIR) M=$(shell pwd)/dev_handlers \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)")
scst:
$(MAKE) -C $(KDIR) M=$(shell pwd)
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)")
install: all
@if [ -z "$(DESTDIR)" ] && \
@@ -93,10 +97,12 @@ install: all
/usr/sbin/weak-modules --remove-kernel; \
fi
$(MAKE) -C $(KDIR) M=$(shell pwd)/dev_handlers \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
INSTALL_MOD_DIR=extra/dev_handlers \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
CONFIG_MODULE_SIG_ALL= modules_install
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
CONFIG_MODULE_SIG_ALL= modules_install
install -d $(INSTALL_DIR_H)

View File

@@ -51,15 +51,18 @@ endif
INSTALL_DIR := $(INSTALL_MOD_PATH)/lib/modules/$(KVER)/extra
all:
$(MAKE) -C $(KDIR) M=$(shell pwd)
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)")
%.lst: %.c
$(MAKE) -C $(KDIR) M=$(shell pwd) $@
$(MAKE) -C $(KDIR) M=$(shell pwd) $@ \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)")
install: all
mkdir -p $(DESTDIR)/var/lib/scst/vdev_mode_pages
KDIR=$(KDIR) ../../../scripts/sign-modules
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
CONFIG_MODULE_SIG_ALL= modules_install

View File

@@ -34,11 +34,13 @@ INSTALL_DIR := $(INSTALL_MOD_PATH)/lib/modules/$(KVER)/extra
SCST_DIR := $(shell echo "$$PWD")/../scst/src
all:
$(MAKE) -C $(KDIR) M=$(shell pwd)
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)")
install: all
KDIR=$(KDIR) ../scripts/sign-modules
$(MAKE) -C $(KDIR) M=$(shell pwd) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
CONFIG_MODULE_SIG_ALL= modules_install

View File

@@ -88,6 +88,7 @@ run_conftest = $(shell \
output=conftest/$1/build-output-$(KVER).txt; \
fi; \
if MAKEFLAGS= make -C $(KDIR) V=$(V) \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
M="$(shell pwd)/conftest/$1" \
CONFTEST_CFLAGS="-Werror $(OFED_CFLAGS)" $(OFED_CONFIG) \
KBUILD_EXTRA_SYMBOLS="$(OFED_MODULE_SYMVERS)" \
@@ -111,8 +112,9 @@ CONFTEST_CFLAGS = $(OFED_CFLAGS) \
done)
all: check $(CONFTEST_OUTPUTS)
$(MAKE) -C $(KDIR) M=$(shell pwd)/src \
CONFTEST_CFLAGS="$(CONFTEST_CFLAGS)" \
$(MAKE) -C $(KDIR) M=$(shell pwd)/src \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
CONFTEST_CFLAGS="$(CONFTEST_CFLAGS)" \
$(OFED_CONFIG) modules
install: all
@@ -120,9 +122,10 @@ install: all
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 \
CONFTEST_CFLAGS="$(CONFTEST_CFLAGS)" \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
$(MAKE) -C $(KDIR) M=$(shell pwd)/src \
$(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") \
CONFTEST_CFLAGS="$(CONFTEST_CFLAGS)" \
$$([ -n "$(DEPMOD)" ] && echo "DEPMOD=$(DEPMOD)") \
CONFIG_MODULE_SIG_ALL= modules_install
uninstall: