LSI/MPT target driver added
[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 MODS_VERS := $(shell ls Modules.symvers 2>/dev/null)
53 # It's renamed in 2.6.18
54 MOD_VERS := $(shell ls Module.symvers 2>/dev/null)
55
56 install: all
57         $(MAKE) -C $(KDIR) SUBDIRS=$(shell pwd) BUILD_DEV=m \
58                 modules_install
59         install -d $(INSTALL_DIR_H)
60         install -m 644 ../include/scsi_tgt.h $(INSTALL_DIR_H)
61         install -m 644 ../include/scst_debug.h $(INSTALL_DIR_H)
62         install -m 644 ../include/scst_debug.c $(INSTALL_DIR_H)
63 ifneq ($(MODS_VERS),)
64         rm -f $(INSTALL_DIR_H)/Module.symvers
65         install -m 644 Modules.symvers $(INSTALL_DIR_H)
66 endif
67 ifneq ($(MOD_VERS),)
68         rm -f $(INSTALL_DIR_H)/Modules.symvers
69         install -m 644 Module.symvers $(INSTALL_DIR_H)
70 endif
71         -depmod -a
72
73 uninstall:
74         cd $(DEV_HANDLERS_DIR) && $(MAKE) $@
75         rm -f $(INSTALL_DIR)/scsi_tgt.ko
76         -rmdir $(INSTALL_DIR) 2>/dev/null
77         -/sbin/depmod -a
78         rm -rf $(INSTALL_DIR_H)
79 endif
80
81 INSTALL_DIR := /lib/modules/$(shell uname -r)/extra
82 INSTALL_DIR_H := /usr/local/include/scst
83
84 INC_DIR := $(SUBDIRS)/../include
85
86 EXTRA_CFLAGS += -I$(INC_DIR)
87
88 #EXTRA_CFLAGS += -DSTRICT_SERIALIZING
89
90 EXTRA_CFLAGS += -DEXTRACHECKS
91 #EXTRA_CFLAGS += -DFILEIO_ONLY
92
93 #EXTRA_CFLAGS += -fno-inline
94
95 #EXTRA_CFLAGS += -DTRACING
96
97 EXTRA_CFLAGS += -DDEBUG
98 #EXTRA_CFLAGS += -DDEBUG_TM -DTM_DBG_GO_OFFLINE=0
99 #EXTRA_CFLAGS += -DDEBUG_RETRY
100 #EXTRA_CFLAGS += -DDEBUG_OOM
101
102 # If defined, makes SCST zero allocated data buffers. 
103 # Undefining it considerably improves performance and eases CPU load, 
104 # but could create a security hole (information leakage), so 
105 # enable it if you have strict security requirements.
106 #EXTRA_CFLAGS += -DSCST_STRICT_SECURITY
107
108 # If defined, allows SCST to use HIGHMEM. It's unclear, if it brings
109 # something valuable, except performance hit in some cases,
110 # so let it be off. Untested.
111 #EXTRA_CFLAGS += -DSCST_HIGHMEM
112
113 clean:
114         rm -f *.o *.ko .*.cmd *.mod.c .*.d .depend Modules.symvers Module.symvers
115         rm -rf .tmp_versions
116         cd $(DEV_HANDLERS_DIR) && $(MAKE) $@
117
118 extraclean: clean
119
120 .PHONY: all install uninstall clean extraclean