summaryrefslogtreecommitdiff
path: root/Makefile
blob: 31c3be780adb7b23685725e3a0ccbc6ad097561d (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
#
# 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
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")
#
# Features
#
# Uncomment -DCONFIG_ZAPATA_NET to enable PPP, CiscoHDLC, and Frame Relay
# support.
#
#KFLAGS+=-DCONFIG_ZAPATA_NET 
KFLAGS+=-DDEFAULT_TONE_ZONE=$(DEFAULTZONE)
KFLAGS+=-DTORMENTA_BASE=$(BASEADDR)

KFLAGS+=-DSTANDALONE_ZAPATA
CFLAGS+=-DSTANDALONE_ZAPATA

MODCONF=$(shell if [ -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 wcfxsusb.o wcfxo.o wcfxs.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 makefw $(ZTTOOL) sethdlc

devel: tor2ee 

tests: patgen pattest

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

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

torisa.o: torisa.c zaptel.h torisa.h
	gcc $(KFLAGS) -c torisa.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
	gcc $(KFLAGS) -c wct1xxp.c

wcfxs.o:wcfxs.c
	gcc $(KFLAGS) -c wcfxs.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

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

$(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
	install -m 755 sethdlc /sbin
	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
	/sbin/depmod -a
	[ -f /etc/zaptel.conf ] || install -m 644 zaptel.conf.sample /etc/zaptel.conf

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