Release 0.9.5 of both SCST and Qlogic target driver
[mirror/scst/.git] / scst / src / Makefile
1 #
2 #  SCSI target mid-level makefile
3 #  
4 #  Copyright (C) 2004 Vladislav Bolkhovitin <vst@vlnb.net>
5 #                 and Leonid Stoljar
6 #  
7 #  This program is free software; you can redistribute it and/or
8 #  modify it under the terms of the GNU General Public License
9 #  as published by the Free Software Foundation, version 2
10 #  of the License.
11
12 #  This program is distributed in the hope that it will be useful,
13 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
14 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 #  GNU General Public License for more details.
16 #
17 #
18 # Main targets:
19 #    all (the default) : make all
20 #    clean             : clean files
21 #    extraclean        : clean + clean dependencies
22 #    install           : install 
23 #    uninstall         : uninstall 
24 #
25 # Notes :
26 #    - install and uninstall must be made as root
27 #
28
29 DEV_HANDLERS_DIR = dev_handlers
30
31 ifneq ($(KERNELRELEASE),)
32 obj-m := scsi_tgt.o
33 scsi_tgt-objs := scst.o scst_targ.o scst_lib.o scst_mem.o scst_proc.o
34
35 obj-$(BUILD_DEV) += $(DEV_HANDLERS_DIR)/
36
37 else
38 ifeq ($(KVER),)
39   ifeq ($(KDIR),)
40     KDIR := /lib/modules/$(shell uname -r)/build
41   endif
42 else
43   KDIR := /lib/modules/$(KVER)/build
44 endif
45
46 all:
47         $(MAKE) -C $(KDIR) SUBDIRS=$(shell pwd) BUILD_DEV=m
48
49 scst:
50         $(MAKE) -C $(KDIR) SUBDIRS=$(shell pwd) BUILD_DEV=n
51
52 install: all
53         $(MAKE) -C $(KDIR) SUBDIRS=$(shell pwd) BUILD_DEV=m \
54                 modules_install
55         install -d $(INSTALL_DIR_H)
56         install -m 644 ../include/scsi_tgt.h $(INSTALL_DIR_H)
57         install -m 644 ../include/scst_debug.h $(INSTALL_DIR_H)
58         install -m 644 ../include/scst_debug.c $(INSTALL_DIR_H)
59         -depmod -a
60
61 uninstall:
62         cd $(DEV_HANDLERS_DIR) && $(MAKE) $@
63         rm -f $(INSTALL_DIR)/scsi_tgt.ko
64         -rmdir $(INSTALL_DIR) 2>/dev/null
65         -/sbin/depmod -a
66         rm -rf $(INSTALL_DIR_H)
67 endif
68
69 INSTALL_DIR := /lib/modules/$(shell uname -r)/extra
70 INSTALL_DIR_H := /usr/local/include/scst
71
72 INC_DIR := $(SUBDIRS)/../include
73
74 EXTRA_CFLAGS += -I$(INC_DIR)
75
76 #EXTRA_CFLAGS += -DSTRICT_SERIALIZING
77
78 EXTRA_CFLAGS += -DEXTRACHECKS
79 EXTRA_CFLAGS += -DFILEIO_ONLY
80
81 #EXTRA_CFLAGS += -fno-inline
82
83 EXTRA_CFLAGS += -DTRACING
84
85 #EXTRA_CFLAGS += -DDEBUG
86 #EXTRA_CFLAGS += -DDEBUG_TM -DTM_DBG_GO_OFFLINE=0
87 #EXTRA_CFLAGS += -DDEBUG_RETRY
88 #EXTRA_CFLAGS += -DDEBUG_OOM
89
90 # If defined, makes SCST zero allocated data buffers. 
91 # Undefining it considerably improves performance and eases CPU load, 
92 # but could create a security hole (information leakage), so 
93 # enable it if you have strict security requirements.
94 #EXTRA_CFLAGS += -DSCST_STRICT_SECURITY
95
96 # If defined, allows SCST to use HIGHMEM. It's unclear, if it brings
97 # something valuable, except performance hit in some cases,
98 # so let it be off. Untested.
99 #EXTRA_CFLAGS += -DSCST_HIGHMEM
100
101 clean:
102         rm -f *.o *.ko .*.cmd *.mod.c .*.d .depend Modules.symvers Module.symvers
103         rm -rf .tmp_versions
104         cd $(DEV_HANDLERS_DIR) && $(MAKE) $@
105
106 extraclean: clean
107
108 .PHONY: all install uninstall clean extraclean