| # |
| # SCSI target mid-level makefile |
| # |
| # Copyright (C) 2015 - 2018 Vladislav Bolkhovitin <vst@vlnb.net> |
| # Copyright (C) 2004 - 2005 Leonid Stoljar |
| # Copyright (C) 2007 - 2018 Western Digital Corporation |
| # |
| # This program is free software; you can redistribute it and/or |
| # modify it under the terms of the GNU General Public License |
| # as published by the Free Software Foundation, version 2 |
| # of the License. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| # |
| # |
| # Main targets: |
| # all (the default) : make all |
| # clean : clean files |
| # extraclean : clean + clean dependencies |
| # install : install |
| # uninstall : uninstall |
| # |
| # Notes : |
| # - install and uninstall must be made as root |
| # |
| |
| ifndef PREFIX |
| PREFIX=/usr/local |
| endif |
| |
| SHELL=/bin/bash |
| |
| DEV_HANDLERS_DIR = dev_handlers |
| |
| ifeq ($(KVER),) |
| ifeq ($(KDIR),) |
| KVER := $(shell uname -r) |
| KDIR := /lib/modules/$(KVER)/build |
| else |
| KVER := $(strip $(shell \ |
| cat $(KDIR)/include/config/kernel.release 2>/dev/null || \ |
| make -s -C $(KDIR) kernelversion)) |
| endif |
| else |
| ifeq ($(KDIR),) |
| KDIR := /lib/modules/$(KVER)/build |
| endif |
| endif |
| |
| ifeq ($(INSTALL_MOD_PATH),) |
| export INSTALL_MOD_PATH := $(DESTDIR) |
| endif |
| |
| ifeq ($(SCST_INC_DIR),) |
| SCST_INC_DIR := ../include |
| endif |
| |
| SCST_INTF_VER_FILE := $(SCST_INC_DIR)/scst_itf_ver.h |
| |
| $(SCST_INTF_VER_FILE): $(SCST_INC_DIR)/scst.h $(SCST_INC_DIR)/scst_const.h $(SCST_INC_DIR)/scst_user.h |
| echo "/* Autogenerated, don't edit */" >$(SCST_INTF_VER_FILE) |
| echo "" >>$(SCST_INTF_VER_FILE) |
| echo -n "#define SCST_INTF_VER " >>$(SCST_INTF_VER_FILE) |
| echo "\"`sha1sum $(SCST_INC_DIR)/scst.h|awk '{printf $$1}'`\"" >>$(SCST_INTF_VER_FILE) |
| echo -n "#define SCST_CONST_INTF_VER " >>$(SCST_INTF_VER_FILE) |
| echo "\"`sha1sum $(SCST_INC_DIR)/scst_const.h|awk '{printf $$1}'`\"" >>$(SCST_INTF_VER_FILE) |
| echo -n "#define DEV_USER_INTF_VER " >>$(SCST_INTF_VER_FILE) |
| 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) \ |
| $(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) \ |
| $(shell [ -n "$(PASS_CC_TO_MAKE)" ] && echo CC="$(CC)") |
| |
| install: all |
| @if [ -z "$(DESTDIR)" ] && \ |
| { rpm -q scst || rpm -q scst-devel; } >/dev/null 2>&1; then \ |
| echo Error: the scst and/or scst-devel RPMs must be uninstalled first; \ |
| false; fi |
| -rm -f $(INSTALL_DIR)/scsi_tgt.ko |
| KDIR=$(KDIR) ../../scripts/sign-modules |
| # Apparently on RHEL 8 and CentOS 8 the module installation can |
| # leave stale symlinks in /lib/modules/$(KVER)/weak-updates/. These |
| # symlinks may cause loading of SCST to fail, Remove these symlinks |
| # before installing SCST. |
| if [ -e /usr/sbin/weak-modules ]; then \ |
| /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) |
| header_files="backport.h build_mode.h scst.h scst_const.h \ |
| scst_debug.h scst_itf_ver.h scst_sgv.h \ |
| scst_user.h"; \ |
| for h in $${header_files}; do \ |
| install -m 644 ../include/$$h $(INSTALL_DIR_H); \ |
| done |
| rm -f $(INSTALL_DIR_H)/Module.symvers |
| install -m 644 Module.symvers $(INSTALL_DIR_H) |
| mkdir -p $(DESTDIR)/var/lib/scst/pr |
| mkdir -p $(DESTDIR)/var/lib/scst/dif_tags |
| mkdir -p $(DESTDIR)/var/lib/scst/vdev_mode_pages |
| @echo "****************************************************************" |
| @echo "*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*" |
| @echo "*!! !!*" |
| @echo "*!! Now don't forget to rebuild and reinstall all your !!*" |
| @echo "*!! target drivers, custom dev handlers and necessary user !!*" |
| @echo "*!! space applications. Otherwise, because of the versions !!*" |
| @echo "*!! mismatch, you could have many problems and crashes. !!*" |
| @echo "*!! See IMPORTANT note in the \"Installation\" section of !!*" |
| @echo "*!! SCST's README file for more info. !!*" |
| @echo "*!! !!*" |
| @echo "*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*" |
| @echo "****************************************************************" |
| |
| uninstall: |
| cd $(DEV_HANDLERS_DIR) && $(MAKE) $@ |
| rm -f $(INSTALL_DIR)/scst.ko |
| -rmdir $(INSTALL_DIR) 2>/dev/null |
| -/sbin/depmod -b $(INSTALL_MOD_PATH)/ -a $(KVER) |
| rm -rf $(INSTALL_DIR_H) |
| |
| INSTALL_DIR := $(INSTALL_MOD_PATH)/lib/modules/$(KVER)/extra |
| INSTALL_DIR_H := $(DESTDIR)$(PREFIX)/include/scst |
| |
| clean: |
| rm -f $(SCST_INTF_VER_FILE) |
| $(MAKE) -C $(KDIR) M=$(shell pwd) $@ |
| $(MAKE) -C $(DEV_HANDLERS_DIR) $@ |
| |
| extraclean: clean |
| rm -f $(SCST_INTF_VER_FILE) |
| cd $(DEV_HANDLERS_DIR) && $(MAKE) $@ |
| rm -f *.orig *.rej |
| |
| .PHONY: all install uninstall clean extraclean |