7910dddb5bbba02271b142dc2176058c0cdc57cb
[debian/madwifi.git] / Makefile
1 #
2 # Copyright (c) 2002-2005 Sam Leffler, Errno Consulting
3 # All rights reserved.
4 #
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions
7 # are met:
8 # 1. Redistributions of source code must retain the above copyright
9 #    notice, this list of conditions and the following disclaimer,
10 #    without modification.
11 # 2. Redistributions in binary form must reproduce at minimum a disclaimer
12 #    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
13 #    redistribution must be conditioned upon including a substantially
14 #    similar Disclaimer requirement for further binary redistribution.
15 # 3. Neither the names of the above-listed copyright holders nor the names
16 #    of any contributors may be used to endorse or promote products derived
17 #    from this software without specific prior written permission.
18 #
19 # Alternatively, this software may be distributed under the terms of the
20 # GNU General Public License ("GPL") version 2 as published by the Free
21 # Software Foundation.
22 #
23 # NO WARRANTY
24 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 # LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
27 # AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
28 # THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
29 # OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
32 # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
34 # THE POSSIBILITY OF SUCH DAMAGES.
35 #
36 # $Id: //depot/sw/linuxsrc/src/802_11/madwifi/madwifi/Makefile $
37 #
38
39 #
40 # Makefile for the HAL-based Atheros driver.
41 #
42
43 obj := $(firstword $(obj) $(SUBDIRS) .)
44 TOP = $(obj)
45
46 ifneq (svnversion.h,$(MAKECMDGOALS))
47 include $(TOP)/Makefile.inc
48 endif
49
50 obj-y := ath/ ath_hal/ ath_rate/ net80211/
51
52 ifdef CRYPTO_TESTING
53 obj-y += regression/
54 endif
55
56 all: modules tools
57
58 modules: configcheck $(TOP)/svnversion.h
59 ifdef LINUX24
60         for i in $(obj-y); do \
61                 $(MAKE) -C $$i || exit 1; \
62         done
63 else
64         $(MAKE) -C $(KERNELPATH) SUBDIRS=$(shell pwd) modules
65 endif
66
67 $(addprefix $(obj)/, $(obj-y:/=)): $(TOP)/svnversion.h
68
69 $(TOP)/svnversion.h:
70         @cd $(TOP) && \
71         if [ -d .svn ]; then \
72                 ver=$$(svnversion -nc . | sed -e 's/^[^:]*://;s/[A-Za-z]//'); \
73                 echo "#define SVNVERSION \"svn r$$ver\"" > $@.tmp; \
74         elif [ -d .git ]; then \
75                 ver=$$(git svn log | head -n2 | tail -n1 | cut -d\  -f1); \
76                 echo "#define SVNVERSION \"svn $$ver\"" > $@.tmp; \
77         elif [ -s SNAPSHOT ]; then \
78                 ver=$$(sed -e '/^Revision: */!d;s///;q' SNAPSHOT); \
79                 echo "#define SVNVERSION \"svn r$$ver\"" > $@.tmp; \
80         else \
81                 touch $@.tmp; \
82         fi || exit 1; \
83         diff $@ $@.tmp >/dev/null 2>&1 || cp -f $@.tmp $@; rm -f $@.tmp
84
85 # conflicts with the 'tools' subdirectory
86 .PHONY: tools
87 tools:
88         $(MAKE) -C $(TOOLS) all || exit 1
89
90 install: install-modules install-tools
91
92 install-modules:
93         @# check if there are modules left from an old installation
94         @# might cause make to abort the build
95         sh scripts/find-madwifi-modules.sh -r $(KERNELRELEASE) $(DESTDIR)
96
97         for i in $(obj-y); do \
98                 $(MAKE) -C $$i install || exit 1; \
99         done
100 ifeq ($(DESTDIR),)
101         (export KMODPATH=$(KMODPATH); /sbin/depmod -ae $(KERNELRELEASE))
102 endif
103
104 install-tools:
105         $(MAKE) -C $(TOOLS) install || exit 1
106
107 uninstall:
108         sh scripts/find-madwifi-modules.sh $(KERNELRELEASE) $(DESTDIR)
109         $(MAKE) -C $(TOOLS) uninstall
110
111 clean:
112         for i in $(obj-y); do \
113                 $(MAKE) -C $$i clean; \
114         done
115         -$(MAKE) -C $(TOOLS) clean
116         rm -rf .tmp_versions
117         rm -f *.symvers svnversion.h
118
119 info:
120         @echo "The following settings will be used for compilation:"
121         @echo "TARGET       : $(TARGET)"
122         @echo "ARCH         : $(ARCH)"
123         @echo "BUS          : $(BUS)"
124         @echo "KERNELRELEASE: $(KERNELRELEASE)"
125         @echo "KERNELPATH   : $(KERNELPATH)"
126         @echo "KERNELCONF   : $(KERNELCONF)"
127         @echo "KMODPATH     : $(KMODPATH)"
128         @echo "KMODSUF      : $(KMODSUF)"
129
130 sanitycheck:
131         @echo -n "Checking requirements... "
132         
133         @# check if specified rate control is available
134         @if [ ! -d $(ATH_RATE) ]; then \
135             echo "FAILED"; \
136             echo "Selected rate control $(ATH_RATE) not available."; \
137             exit 1; \
138         fi
139         
140         @echo "ok."
141
142 .PHONY: release
143 release:
144         sh scripts/make-release.bash
145
146 .PHONY: unload
147 unload:
148         bash scripts/madwifi-unload
149
150 configcheck: sanitycheck
151         @echo -n "Checking kernel configuration... "
152         
153         @# check version of kernel
154         @echo $(KERNELRELEASE) | grep -q -i '^[2-9]\.[4-9]\.' || { \
155             echo "FAILED"; \
156             echo "Only kernel versions 2.4.x and above are supported."; \
157             echo "You have $(KERNELRELEASE)."; \
158             exit 1; \
159         }
160         
161         @# check kernel configuration
162         @if [ -z "$(CONFIG_SYSCTL)" ]; then \
163             echo "FAILED"; \
164             echo "Please enable sysctl support."; \
165             exit 1; \
166         fi
167         
168 ifeq ($(strip $(BUS)),PCI)
169         @# check PCI support
170         @if [ -z "$(CONFIG_PCI)" ]; then \
171             echo "FAILED"; \
172             echo "Please enable PCI support."; \
173             exit 1; \
174         fi
175 endif
176         
177         @# check wireless extensions support is enabled
178         @if [ -z "$(CONFIG_NET_RADIO)$(CONFIG_WIRELESS_EXT)" ]; then \
179             echo "FAILED"; \
180             echo "Please enable wireless extensions."; \
181             exit 1; \
182         fi
183         
184         @# check crypto support is enabled
185         @if [ -z "$(CONFIG_CRYPTO)" ]; then \
186             echo "FAILED"; \
187             echo "Please enable crypto API."; \
188             exit 1; \
189         fi
190         
191         @echo "ok."