blob: 959a67fa3227dd3d8b0ca1af286e432b5c2c5c67 [file] [log] [blame]
#
# Common makefile for SCSI target mid-level and its drivers
#
# 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.
#
#
SHELL=/bin/bash
# Decide to use which kernel src. If not specified, is current running kernel.
#export KDIR=/usr/src/linux-2.6
SCST_DIR=src
# Set variable $(2) to value $(3) in file $(1) if $(2)=$(3) does not yet occur
# in file $(1).
set_var = $(shell if grep -q '^$(2)=' '$(1)' 2>/dev/null; then \
grep -q '^$(2)=$(3)$$' '$(1)' || \
sed -i 's/^$(2)=.*/$(2)=$(3)/' '$(1)'; \
else \
echo '$(2)=$(3)' >> '$(1)'; \
fi)
all: include/build_mode.h
cd $(SCST_DIR) && $(MAKE) $@
install: include/build_mode.h
cd $(SCST_DIR) && $(MAKE) $@
uninstall:
cd $(SCST_DIR) && $(MAKE) $@
clean:
rm -f include/build_mode.h
cd $(SCST_DIR) && $(MAKE) $@
extraclean:
cd $(SCST_DIR) && $(MAKE) $@
2debug:
$(call set_var,build_mode,BUILD_MODE,)
@true
2release:
$(call set_var,build_mode,BUILD_MODE,RELEASE)
@true
2perf:
$(call set_var,build_mode,BUILD_MODE,PERF)
@true
release-archive:
../scripts/generate-release-archive scst \
"$$(sed -n 's/^#define[[:blank:]]SCST_VERSION_NAME[[:blank:]]*\"\([^\"]*\)\".*/\1/p' include/scst_const.h)"
build_mode:
$(call set_var,build_mode,BUILD_MODE,)
include/build_mode.h: build_mode
@rm -f $@.tmp; \
touch $@.tmp; \
source build_mode; \
case "$${BUILD_MODE}" in \
"") defines="CONFIG_SCST_TRACING CONFIG_SCST_DEBUG \
CONFIG_SCST_EXTRACHECKS";; \
RELEASE) defines=CONFIG_SCST_TRACING;; \
PERF) defines="";; \
*) echo "Error: unsupported build mode $$(<build_mode)"; \
exit 1;; \
esac; \
for d in $$defines; do \
echo "#define $$d" >>$@.tmp; \
done; \
if [ ! -e $@ ] || ! diff -q $@.tmp $@ >&/dev/null; then \
mv $@.tmp $@; \
else \
rm -f $@.tmp; \
fi
help:
@echo " all (the default) : make all"
@echo " clean : clean files"
@echo " extraclean : clean + clean dependencies"
@echo " install : install"
@echo " uninstall : uninstall"
@echo " Notes :"
@echo " - install and uninstall must be made as root."
@echo " - be sure to compile qla against the correct initiator"
@echo " driver. Read its README for details."
.PHONY: all install uninstall clean extraclean help 2release 2debug 2perf