summaryrefslogtreecommitdiff
path: root/Makefile
blob: fb592cbebc5c139c53d7d2d4f6caf255d274b695 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
#
# Makefile for tormenta/carrier driver and utilities
#
BASEADDR=0xd0000
DEFAULTZONE=0

#
# Okay, the people at RedHat have to break everything they can possibly even attempt to.
# So, we have to look in /usr/src/linux-2.4/include for header files given their brain dead
# crappy installation.  (Mind you, I'm a RedHat user myself, so I suppose I'm just as
# stupid as they are).  Everyone else who is mildly sane of course links /usr/include/linux
# to their working kernel source directory, the way God himself does, of course
# (assuming He's running Linux -- which we all know He must).
#
KINCLUDES=$(shell if [ -d /usr/src/linux-2.4/include ]; then echo /usr/src/linux-2.4/include ; else echo /usr/src/linux/include ; fi)

CFLAGS+=-I. -O4 -g -Wall -DBUILDING_TONEZONE #-DTONEZONE_DRIVER
CFLAGS+=$(shell if uname -m | grep -q ppc; then echo "-fsigned-char"; fi)
LCFLAGS=-fPIC $(CFLAGS) -DBUILDING_TONEZONE
KFLAGS+=-I/usr/src/linux-2.4/include -O6
KFLAGS+=-DMODULE -D__KERNEL__ -DEXPORT_SYMTAB -I/usr/src/linux/drivers/net \
	-Wall -I. -Wstrict-prototypes -fomit-frame-pointer -I/usr/src/linux/drivers/net/wan -I /usr/src/linux/include -I/usr/src/linux/include/net
KFLAGS+=$(shell [ -f $(KINCLUDES)/linux/modversions.h ] && echo "-DMODVERSIONS -include $(KINCLUDES)/linux/modversions.h")
KFLAGS+=$(shell if uname -m | grep -q ppc; then echo "-msoft-float -fsigned-char"; fi)
#
# Features
#
#
# Define CONFIG_CALC_XLAW if you have a small number of channels and/or
# a small level 2 cache, to optimize for few channels
#
#KFLAGS+=-DCONFIG_CALC_XLAW
#
# Define if you want MMX optimizations in zaptel
#
#KFLAGS+=-DCONFIG_ZAPTEL_MMX
#
# Pick your echo canceller: MARK, STEVE, or STEVE2 :)
# 
KFLAGS+=-DECHO_CAN_STEVE
#KFLAGS+=-DECHO_CAN_STEVE2
#KFLAGS+=-DECHO_CAN_MARK
#
# Uncomment -DCONFIG_ZAPATA_NET to enable SyncPPP, CiscoHDLC, and Frame Relay
# support.
#
#KFLAGS+=-DCONFIG_ZAPATA_NET
#
# Uncomment for Generic PPP support (i.e. ZapRAS)
#
KFLAGS+=-DCONFIG_ZAPATA_PPP
#
# ISA Defaults can be set here.
#
KFLAGS+=-DTORMENTA_BASE=$(BASEADDR)

KFLAGS+=-DDEFAULT_TONE_ZONE=$(DEFAULTZONE)
#
# Uncomment if you have an SMP kernel
#
#KFLAGS+=-D__SMP__

KFLAGS+=-DSTANDALONE_ZAPATA
CFLAGS+=-DSTANDALONE_ZAPATA

MODCONF=$(shell if [ -d /etc/modutils ]; then echo "/etc/modutils/zaptel"; elif [ -f /etc/modules.conf ]; then echo /etc/modules.conf; else echo /etc/conf.modules ; fi)

TZOBJS=zonedata.lo tonezone.lo
LIBTONEZONE=libtonezone.so.1.0
MODULES=zaptel.o tor2.o torisa.o wcusb.o wcfxsusb.o wcfxo.o wcfxs.o \
	ztdynamic.o ztd-eth.o
MODULES+=$(shell if [ -f wct1xxp.c ]; then echo wct1xxp.o; fi)
ZTTOOL=$(shell if [ -f /usr/include/newt.h ]; then echo zttool; fi)
#PRIMARY=wcfxsusb
PRIMARY=torisa
#PRIMARY=wcfxo

all:	$(MODULES) ztcfg torisatool fxstest makefw ztmonitor ztspeed $(ZTTOOL)

devel: tor2ee 

tests: patgen pattest

tor2.o: tor2.c tor2-hw.h tor.h tor2fw.h zaptel.h
	gcc $(KFLAGS) -c tor2.c

zaptel.o: zaptel.c zaptel.h digits.h arith.h
	gcc $(KFLAGS) -c zaptel.c

torisa.o: torisa.c zaptel.h torisa.h
	gcc $(KFLAGS) -c torisa.c

wcusb.o: wcusb.c wcusb.h zaptel.h
	gcc $(KFLAGS) -c wcusb.c

wcfxsusb.o: wcfxsusb.c wcfxsusb.h zaptel.h
	gcc $(KFLAGS) -c wcfxsusb.c

wcfxo.o: wcfxo.c zaptel.h
	gcc $(KFLAGS) -c wcfxo.c

wct1xxp.o:wct1xxp.c zaptel.h
	gcc $(KFLAGS) -c wct1xxp.c

wcfxs.o:wcfxs.c zaptel.h
	gcc $(KFLAGS) -c wcfxs.c

ztdynamic.o: ztdynamic.c zaptel.h
	gcc $(KFLAGS)  -c ztdynamic.c

ztd-eth.o: ztd-eth.c zaptel.h
	gcc $(KFLAGS)  -c ztd-eth.c

tor2ee.o: tor2-hw.h

tor2ee: tor2ee.o
	gcc $(CFLAGS) -o tor2ee tor2ee.o -lpci

zonedata.lo: zonedata.c
	$(CC) -c $(LCFLAGS) -o zonedata.lo zonedata.c

tonezone.lo: tonezone.c
	$(CC) -c $(LCFLAGS) -o tonezone.lo tonezone.c

torisatool: torisatool.o
	$(CC) -o torisatool torisatool.o

tones.h: gendigits
	./gendigits

tor2fw.h: makefw tormenta2.rbt
	./makefw tormenta2.rbt tor2fw > tor2fw.h

gendigits: gendigits.o
	$(CC) -o gendigits gendigits.o -lm

zaptel.c: tones.h

zttool.o: zttool.c zaptel.h

ztmonitor.o: ztmonitor.c zaptel.h

ztspeed.o: ztspeed.c
	$(CC) -c ztspeed.c

zttool: zttool.o
	$(CC) -o zttool zttool.o -lnewt

ztmonitor: ztmonitor.o
	$(CC) -o ztmonitor ztmonitor.o

ztcat: ztcat.o
	$(CC) -o ztcat ztcat.o -ltonezone

ztspeed: ztspeed.o
	$(CC) -o ztspeed ztspeed.o

$(LIBTONEZONE): $(TZOBJS)
	$(CC) -shared -Wl,-soname,libtonezone.so.1 -lm -o $@ $(TZOBJS)
	/sbin/ldconfig -n .
	ln -sf libtonezone.so.1 libtonezone.so                                  

ztcfg.c: ztcfg.h

ztcfg: ztcfg.o $(LIBTONEZONE)
	$(CC) -o ztcfg ztcfg.o -L. -ltonezone

devices:
	mkdir -p /dev/zap
	rm -f /dev/zap/ctl
	rm -f /dev/zap/channel
	rm -f /dev/zap/pseudo
	mknod /dev/zap/ctl c 196 0
	mknod /dev/zap/channel c 196 254
	mknod /dev/zap/pseudo c 196 255
	N=1; \
	while [ $$N -lt 253 ]; do \
		rm -f /dev/zap/$$N; \
		mknod /dev/zap/$$N c 196 $$N; \
		N=$$[$$N+1]; \
	done

install:  all devices
	install -m 755 ztcfg /sbin
	if [ -f sethdlc ]; then install -m 755 sethdlc /sbin ; fi
	if [ -f zttool ]; then install -m 755 zttool /sbin; fi
	mkdir -p /lib/modules/`uname -r`/misc
	for x in $(MODULES); do \
		install -m 644 $$x /lib/modules/`uname -r`/misc ; \
	done
	mkdir -p /usr/lib
	install -m 755 $(LIBTONEZONE) /usr/lib
	install -m 644 zaptel.h /usr/include/linux
	install -m 644 torisa.h /usr/include/linux
	install -m 644 tonezone.h /usr/include
	( cd /usr/lib ; rm -f libtonezone.so ; ln -sf $(LIBTONEZONE) libtonezone.so )
	/sbin/ldconfig

	if [ -f $(MODCONF) ]; then mv -f $(MODCONF) $(MODCONF).bak ; fi
	cat $(MODCONF).bak | grep -v "alias char-major-250" | \
	grep -v "post-install torisa /sbin/ztcfg" | \
	grep -v "post-install wcfxsusb /sbin/ztcfg" | \
	grep -v "post-install wcfxs /sbin/ztcfg" > $(MODCONF) || true
	if ! grep "options torisa" $(MODCONF); then \
		echo "options torisa base=$(BASEADDR)" >> $(MODCONF); \
	fi
	if ! grep "alias char-major-196" $(MODCONF); then \
		echo "alias char-major-196 $(PRIMARY)" >> $(MODCONF); \
	fi
	if ! grep "post-install wcfxs" $(MODCONF); then \
		echo "post-install wcfxs /sbin/ztcfg" >> $(MODCONF); \
	fi
	if ! grep "post-install wcfxsusb" $(MODCONF); then \
		echo "post-install wcfxsusb /sbin/ztcfg" >> $(MODCONF); \
	fi
	if ! grep "post-install torisa" $(MODCONF); then \
		echo "post-install torisa /sbin/ztcfg" >> $(MODCONF); \
	fi
	if ! grep "post-install tor2" $(MODCONF); then \
		echo "post-install tor2 /sbin/ztcfg" >> $(MODCONF); \
	fi
	if ! grep "post-install wcfxo" $(MODCONF); then \
		echo "post-install wcfxo /sbin/ztcfg" >> $(MODCONF); \
	fi
	if ! grep "post-install wct1xxp" $(MODCONF); then \
		echo "post-install wct1xxp /sbin/ztcfg" >> $(MODCONF); \
	fi
	if [ -d /etc/modutils ]; then \
		/sbin/update-modules ; \
	fi
	/sbin/depmod -a
	[ -f /etc/zaptel.conf ] || install -m 644 zaptel.conf.sample /etc/zaptel.conf

config:
	if [ -d /etc/rc.d/init.d ]; then \
		install -m 755 zaptel.init /etc/rc.d/init.d/zaptel; \
		chkconfig --add zaptel; \
	elif [ -d /etc/init.d ]; then \
		install -m 755 zaptel.init /etc/init.d/zaptel; \
	fi 
	if [ ! -f /etc/sysconfig/zaptel ]; then \
		install -m 644 zaptel.sysconfig /etc/sysconfig/zaptel; \
	fi
	if [ -d /etc/sysconfig/network-scripts ]; then \
		install -m 755 ifup-hdlc /etc/sysconfig/network-scripts/ifup-hdlc; \
	fi
	
clean:
	rm -f torisatool makefw tor2fw.h
	rm -f zttool
	rm -f *.o ztcfg tzdriver sethdlc
	rm -f $(TZOBJS) $(LIBTONEZONE) *.lo
	rm -f gendigits tones.h
	rm -f libtonezone*
	rm -f tor2ee
	rm -f core