2a7d31fe4f0441edef474b96afb39f8a21d7a8d4
[mirror/scst/.git] / iscsi-scst / Makefile
1 #
2 # Makefile for iSCSI-SCST
3 #
4 # Note! Dependencies are done automagically by 'make dep', which also
5 # removes any old dependencies. DON'T put your own dependencies here
6 # unless it's something special (not a .c file).
7
8 SUBDIRS := $(shell pwd)
9
10 #SCST_INC_DIR := /usr/local/include/scst
11 SCST_INC_DIR := $(SUBDIRS)/../scst/include
12 #SCST_DIR := $(SCST_INC_DIR)
13 SCST_DIR := $(shell pwd)/../scst/src
14 SBINDIR := /usr/local/sbin
15 INITDIR := /etc/init.d
16 RCDIR := /etc/rc.d
17 KMOD := $(shell pwd)/kernel
18
19 ifeq ($(KVER),)
20   ifeq ($(KDIR),)
21     KVER = $(shell uname -r)
22     KDIR ?= /lib/modules/$(KVER)/build
23   else
24     KVER = $$KERNELRELEASE
25   endif
26 else
27   KDIR ?= /lib/modules/$(KVER)/build
28 endif
29
30 all: include/iscsi_scst_itf_ver.h progs mods
31
32 mods: Modules.symvers Module.symvers
33         $(MAKE) -C $(KDIR) SCST_INC_DIR=$(SCST_INC_DIR) SUBDIRS=$(KMOD) modules
34
35 progs:
36         $(MAKE) -C usr
37
38 include/iscsi_scst_itf_ver.h: include/iscsi_scst.h
39         echo "/* Autogenerated, don't edit */" >include/iscsi_scst_itf_ver.h
40         echo "" >>include/iscsi_scst_itf_ver.h
41         echo -n "#define ISCSI_SCST_INTERFACE_VERSION " >>include/iscsi_scst_itf_ver.h
42         echo "\"`sha1sum include/iscsi_scst.h|awk '{printf $$1}'`\"" >>include/iscsi_scst_itf_ver.h
43
44 install: all
45         @install -vD usr/iscsi-scstd $(DESTDIR)$(SBINDIR)/iscsi-scstd
46         @install -vD usr/iscsi-scst-adm $(DESTDIR)$(SBINDIR)/iscsi-scst-adm
47         if [ -f /etc/debian_version ]; then \
48                 install -vD -m 755 etc/initd/initd.debian $(DESTDIR)$(INITDIR)/iscsi-scst; \
49         elif [ -f /etc/redhat-release ]; then \
50                 install -vD -m 755 etc/initd/initd.redhat $(DESTDIR)$(INITDIR)/iscsi-scst; \
51         elif [ -f /etc/gentoo-release ]; then \
52                 install -vD -m 755 etc/initd/initd.gentoo $(DESTDIR)$(INITDIR)/iscsi-scst; \
53         elif [ -f /etc/slackware-version ]; then \
54                 install -vD -m 755 etc/initd/initd $(DESTDIR)$(RCDIR)/iscsi-scst; \
55         else \
56                 install -vD -m 755 etc/initd/initd $(DESTDIR)$(INITDIR)/iscsi-scst; \
57         fi
58         @eval `sed -n 's/#define UTS_RELEASE /KERNELRELEASE=/p' $(KDIR)/include/linux/version.h $(KDIR)/include/linux/utsrelease.h 2>/dev/null`; \
59         install -vD -m 644 kernel/iscsi-scst.ko \
60         $(DESTDIR)$(INSTALL_MOD_PATH)/lib/modules/$(KVER)/extra/iscsi-scst.ko
61         -/sbin/depmod -aq $(KVER)
62
63 SCST_MOD_VERS := $(shell ls $(SCST_DIR)/Modules.symvers 2>/dev/null)
64 ifneq ($(SCST_MOD_VERS),)
65 Modules.symvers: $(SCST_DIR)/Modules.symvers
66         echo $(SCST_MOD_VERS)
67         cp $(SCST_DIR)/Modules.symvers kernel/
68 else
69 .PHONY: Modules.symvers
70 endif
71
72 # It's renamed in 2.6.18
73 SCST_MOD_VERS := $(shell ls $(SCST_DIR)/Module.symvers 2>/dev/null)
74 ifneq ($(SCST_MOD_VERS),)
75 Module.symvers: $(SCST_DIR)/Module.symvers
76         cp $(SCST_DIR)/Module.symvers kernel/
77 else
78 .PHONY: Module.symvers
79 endif
80
81 clean:
82         $(MAKE) -C usr clean
83         $(MAKE) -C $(KDIR) SUBDIRS=$(KMOD) clean
84         rm -f kernel/Modules.symvers kernel/Module.symvers \
85                 kernel/Module.markers kernel/modules.order \
86                 include/iscsi_scst_itf_ver.h
87
88 extraclean: clean
89
90 debug2release:
91         sed -i.aa s/"^EXTRA_CFLAGS += \-DCONFIG_SCST_EXTRACHECKS"/"#EXTRA_CFLAGS += \-DCONFIG_SCST_EXTRACHECKS"/ $(KMOD)/Makefile
92         @cmp $(KMOD)/Makefile $(KMOD)/Makefile.aa >/dev/null; if [[ $$? = 0 ]]; then rm $(KMOD)/Makefile.aa; echo "sed failed"; false; fi
93         sed -i.aa s/"#EXTRA_CFLAGS += \-DCONFIG_SCST_TRACING"/"EXTRA_CFLAGS += \-DCONFIG_SCST_TRACING"/ $(KMOD)/Makefile
94         @cmp $(KMOD)/Makefile $(KMOD)/Makefile.aa >/dev/null; if [[ $$? = 0 ]]; then rm $(KMOD)/Makefile.aa; echo "sed failed"; false; fi
95         sed -i.aa s/"^EXTRA_CFLAGS += \-DCONFIG_SCST_DEBUG -g -fno-inline -fno-inline-functions"/"#EXTRA_CFLAGS += \-DCONFIG_SCST_DEBUG -g -fno-inline -fno-inline-functions"/ $(KMOD)/Makefile
96         @cmp $(KMOD)/Makefile $(KMOD)/Makefile.aa >/dev/null; if [[ $$? = 0 ]]; then rm $(KMOD)/Makefile.aa; echo "sed failed"; false; fi
97         rm $(KMOD)/Makefile.aa
98
99 release2debug:
100         sed -i.aa s/"#EXTRA_CFLAGS += \-DCONFIG_SCST_EXTRACHECKS"/"EXTRA_CFLAGS += \-DCONFIG_SCST_EXTRACHECKS"/ $(KMOD)/Makefile
101         @cmp $(KMOD)/Makefile $(KMOD)/Makefile.aa >/dev/null; if [[ $$? = 0 ]]; then rm $(KMOD)/Makefile.aa; echo "sed failed"; false; fi
102         sed -i.aa s/"^EXTRA_CFLAGS += \-DCONFIG_SCST_TRACING"/"#EXTRA_CFLAGS += \-DCONFIG_SCST_TRACING"/ $(KMOD)/Makefile
103         @cmp $(KMOD)/Makefile $(KMOD)/Makefile.aa >/dev/null; if [[ $$? = 0 ]]; then rm $(KMOD)/Makefile.aa; echo "sed failed"; false; fi
104         sed -i.aa s/"#EXTRA_CFLAGS += \-DCONFIG_SCST_DEBUG -g -fno-inline -fno-inline-functions"/"EXTRA_CFLAGS += \-DCONFIG_SCST_DEBUG -g -fno-inline -fno-inline-functions"/ $(KMOD)/Makefile
105         @cmp $(KMOD)/Makefile $(KMOD)/Makefile.aa >/dev/null; if [[ $$? = 0 ]]; then rm $(KMOD)/Makefile.aa; echo "sed failed"; false; fi
106         rm $(KMOD)/Makefile.aa
107
108 debug2perf:
109         sed -i.aa s/"^EXTRA_CFLAGS += \-DCONFIG_SCST_EXTRACHECKS"/"#EXTRA_CFLAGS += \-DCONFIG_SCST_EXTRACHECKS"/ $(KMOD)/Makefile
110         @cmp $(KMOD)/Makefile $(KMOD)/Makefile.aa >/dev/null; if [[ $$? = 0 ]]; then rm $(KMOD)/Makefile.aa; echo "sed failed"; false; fi
111         sed -i.aa s/"^EXTRA_CFLAGS += \-DCONFIG_SCST_DEBUG -g -fno-inline -fno-inline-functions"/"#EXTRA_CFLAGS += \-DCONFIG_SCST_DEBUG -g -fno-inline -fno-inline-functions"/ $(KMOD)/Makefile
112         @cmp $(KMOD)/Makefile $(KMOD)/Makefile.aa >/dev/null; if [[ $$? = 0 ]]; then rm $(KMOD)/Makefile.aa; echo "sed failed"; false; fi
113         rm $(KMOD)/Makefile.aa
114
115 perf2debug:
116         sed -i.aa s/"#EXTRA_CFLAGS += \-DCONFIG_SCST_EXTRACHECKS"/"EXTRA_CFLAGS += \-DCONFIG_SCST_EXTRACHECKS"/ $(KMOD)/Makefile
117         @cmp $(KMOD)/Makefile $(KMOD)/Makefile.aa >/dev/null; if [[ $$? = 0 ]]; then rm $(KMOD)/Makefile.aa; echo "sed failed"; false; fi
118         sed -i.aa s/"#EXTRA_CFLAGS += \-DCONFIG_SCST_DEBUG -g -fno-inline -fno-inline-functions"/"EXTRA_CFLAGS += \-DCONFIG_SCST_DEBUG -g -fno-inline -fno-inline-functions"/ $(KMOD)/Makefile
119         @cmp $(KMOD)/Makefile $(KMOD)/Makefile.aa >/dev/null; if [[ $$? = 0 ]]; then rm $(KMOD)/Makefile.aa; echo "sed failed"; false; fi
120         rm $(KMOD)/Makefile.aa
121
122 disable_proc:
123
124 enable_proc:
125
126 .PHONY: all mods progs install clean extraclean debug2release release2debug debug2perf perf2debug disable_proc enable_proc