diff --git a/README.clang b/README.clang new file mode 100644 index 000000000..402d529c2 --- /dev/null +++ b/README.clang @@ -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 diff --git a/fcst/Makefile b/fcst/Makefile index ab7a71f4d..8c82d4a41 100644 --- a/fcst/Makefile +++ b/fcst/Makefile @@ -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: diff --git a/iscsi-scst/Makefile b/iscsi-scst/Makefile index eb98f2c9d..3e6366b66 100644 --- a/iscsi-scst/Makefile +++ b/iscsi-scst/Makefile @@ -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: diff --git a/qla2x00t-32gbit/Makefile b/qla2x00t-32gbit/Makefile index d20757f90..c72950dc7 100644 --- a/qla2x00t-32gbit/Makefile +++ b/qla2x00t-32gbit/Makefile @@ -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 diff --git a/qla2x00t-32gbit/qla2x00-target/Makefile b/qla2x00t-32gbit/qla2x00-target/Makefile index e541e9da3..886494dc5 100644 --- a/qla2x00t-32gbit/qla2x00-target/Makefile +++ b/qla2x00t-32gbit/qla2x00-target/Makefile @@ -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: diff --git a/qla2x00t/Makefile b/qla2x00t/Makefile index b68c9bcf8..84fb09bb3 100644 --- a/qla2x00t/Makefile +++ b/qla2x00t/Makefile @@ -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 diff --git a/qla2x00t/qla2x00-target/Makefile b/qla2x00t/qla2x00-target/Makefile index 89c239c25..b976e174c 100644 --- a/qla2x00t/qla2x00-target/Makefile +++ b/qla2x00t/qla2x00-target/Makefile @@ -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: diff --git a/scst/src/Makefile b/scst/src/Makefile index 21b2dfc6a..486ec8abd 100644 --- a/scst/src/Makefile +++ b/scst/src/Makefile @@ -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) diff --git a/scst/src/dev_handlers/Makefile b/scst/src/dev_handlers/Makefile index f05c60cb4..2be974b99 100644 --- a/scst/src/dev_handlers/Makefile +++ b/scst/src/dev_handlers/Makefile @@ -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 diff --git a/scst_local/Makefile b/scst_local/Makefile index e5de8b8df..4e7626f6a 100644 --- a/scst_local/Makefile +++ b/scst_local/Makefile @@ -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 diff --git a/srpt/Makefile b/srpt/Makefile index 6d62ec750..5e398ea54 100644 --- a/srpt/Makefile +++ b/srpt/Makefile @@ -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: