465226596fd2d51ec9758edee990fa602d233e18
[mirror/scst/.git] / scst / src / Makefile
1 #
2 #  SCSI target mid-level makefile
3 #  
4 #  Copyright (C) 2004 - 2008 Vladislav Bolkhovitin <vst@vlnb.net>
5 #  Copyright (C) 2004 - 2005 Leonid Stoljar
6 #  Copyright (C) 2007 - 2008 CMS Distribution Limited
7 #  
8 #  This program is free software; you can redistribute it and/or
9 #  modify it under the terms of the GNU General Public License
10 #  as published by the Free Software Foundation, version 2
11 #  of the License.
12
13 #  This program is distributed in the hope that it will be useful,
14 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
15 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 #  GNU General Public License for more details.
17 #
18 #
19 # Main targets:
20 #    all (the default) : make all
21 #    clean             : clean files
22 #    extraclean        : clean + clean dependencies
23 #    install           : install 
24 #    uninstall         : uninstall 
25 #
26 # Notes :
27 #    - install and uninstall must be made as root
28 #
29
30 DEV_HANDLERS_DIR = dev_handlers
31
32 ifneq ($(KERNELRELEASE),)
33 SCST_INC_DIR := $(SUBDIRS)/../include
34
35 obj-m := scst.o
36 scst-objs := scst_main.o scst_targ.o scst_lib.o scst_mem.o scst_proc.o
37
38 scst-y        += scst_main.o
39 scst-y        += scst_targ.o
40 scst-y        += scst_lib.o
41 scst-y        += scst_proc.o
42 scst-y        += scst_mem.o
43 scst-y        += scst_debug.o
44 obj-$(CONFIG_SCST)   += scst.o dev_handlers/
45
46 obj-$(BUILD_DEV) += $(DEV_HANDLERS_DIR)/
47
48 else
49 ifeq ($(KVER),)
50   ifeq ($(KDIR),)
51     KVER = $(shell uname -r)
52     KDIR := /lib/modules/$(KVER)/build
53   endif
54 else
55   KDIR := /lib/modules/$(KVER)/build
56 endif
57
58 all:
59         $(MAKE) -C $(KDIR) SUBDIRS=$(shell pwd) BUILD_DEV=m
60
61 scst:
62         $(MAKE) -C $(KDIR) SUBDIRS=$(shell pwd) BUILD_DEV=n
63
64 MODS_VERS := $(shell ls Modules.symvers 2>/dev/null)
65 # It's renamed in 2.6.18
66 MOD_VERS := $(shell ls Module.symvers 2>/dev/null)
67
68 install: all
69         -rm -f $(INSTALL_DIR)/scsi_tgt.ko
70         $(MAKE) -C $(KDIR) SUBDIRS=$(shell pwd) BUILD_DEV=m \
71                 modules_install
72         install -d $(INSTALL_DIR_H)
73         install -m 644 ../include/scst.h $(INSTALL_DIR_H)
74         install -m 644 ../include/scst_debug.h $(INSTALL_DIR_H)
75         install -m 644 ../include/scst_user.h $(INSTALL_DIR_H)
76         install -m 644 ../include/scst_const.h $(INSTALL_DIR_H)
77 ifneq ($(MODS_VERS),)
78         rm -f $(INSTALL_DIR_H)/Module.symvers
79         install -m 644 Modules.symvers $(INSTALL_DIR_H)
80 endif
81 ifneq ($(MOD_VERS),)
82         rm -f $(INSTALL_DIR_H)/Modules.symvers
83         install -m 644 Module.symvers $(INSTALL_DIR_H)
84 endif
85         -depmod -a $(KVER)
86         @echo "****************************************************************"
87         @echo "*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*"
88         @echo "*!!                                                          !!*"
89         @echo "*!!  Now don't forget to rebuild and reinstall all your      !!*"
90         @echo "*!!  target drivers, custom dev handlers and necessary user  !!*"
91         @echo "*!!  space applications. Otherwise, because of the versions  !!*"
92         @echo "*!!  mismatch, you could have many problems and crashes.     !!*"
93         @echo "*!!  See IMPORTANT note in the \"Installation\" section of     !!*"
94         @echo "*!!  SCST's README file for more info.                       !!*"
95         @echo "*!!                                                          !!*"
96         @echo "*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*"
97         @echo "****************************************************************"
98
99 uninstall:
100         cd $(DEV_HANDLERS_DIR) && $(MAKE) $@
101         rm -f $(INSTALL_DIR)/scst.ko
102         -rmdir $(INSTALL_DIR) 2>/dev/null
103         -/sbin/depmod -a $(KVER)
104         rm -rf $(INSTALL_DIR_H)
105 endif
106
107 ifeq ($(KVER),)
108 INSTALL_DIR := /lib/modules/$(shell uname -r)/extra
109 else
110 INSTALL_DIR := /lib/modules/$(KVER)/extra
111 endif
112 INSTALL_DIR_H := /usr/local/include/scst
113
114 EXTRA_CFLAGS += -I$(SCST_INC_DIR) -Wextra -Wno-unused-parameter
115
116 #EXTRA_CFLAGS += -DCONFIG_SCST_STRICT_SERIALIZING
117
118 EXTRA_CFLAGS += -DCONFIG_SCST_EXTRACHECKS
119
120 #EXTRA_CFLAGS += -DCONFIG_SCST_USE_EXPECTED_VALUES
121 #EXTRA_CFLAGS += -DALLOW_PASSTHROUGH_IO_SUBMIT_IN_SIRQ
122 #EXTRA_CFLAGS += -DABORT_CONSIDER_FINISHED_TASKS_AS_NOT_EXISTING
123
124 #EXTRA_CFLAGS += -fno-inline
125
126 #EXTRA_CFLAGS += -DCONFIG_SCST_TRACING
127
128 EXTRA_CFLAGS += -DCONFIG_SCST_DEBUG -g -W -Wno-unused-parameter
129 #EXTRA_CFLAGS += -DCONFIG_SCST_DEBUG_TM -UCONFIG_SCST_TM_DBG_GO_OFFLINE
130 #EXTRA_CFLAGS += -DCONFIG_SCST_DEBUG_RETRY
131 #EXTRA_CFLAGS += -DCONFIG_SCST_DEBUG_OOM
132 #EXTRA_CFLAGS += -DCONFIG_SCST_DEBUG_SN
133
134 #EXTRA_CFLAGS += -DCONFIG_SCST_MEASURE_LATENCY
135
136 # If defined, makes SCST zero allocated data buffers. 
137 # Undefining it considerably improves performance and eases CPU load, 
138 # but could create a security hole (information leakage), so 
139 # enable it if you have strict security requirements.
140 #EXTRA_CFLAGS += -DSCST_STRICT_SECURITY
141
142 clean:
143         rm -f *.o *.ko .*.cmd *.mod.c .*.d .depend Modules.symvers \
144                 Module.symvers Module.markers modules.order
145         rm -rf .tmp_versions
146         cd $(DEV_HANDLERS_DIR) && $(MAKE) $@
147
148 extraclean: clean
149
150 .PHONY: all install uninstall clean extraclean