1# @configure_input@
2#***********************************************************************
3#
4# Makefile
5#
6# Makefile for Roaring Penguin's Linux user-space PPPoE client.
7#
8# Copyright (C) 2000 Roaring Penguin Software Inc.
9#
10# This program may be distributed according to the terms of the GNU
11# General Public License, version 2 or (at your option) any later version.
12#
13# LIC: GPL
14#
15# $Id$
16#***********************************************************************
17
18# Version is set ONLY IN THE MAKEFILE!  Don't delete this!
19VERSION=3.11
20
21DEFINES=
22prefix=@prefix@
23exec_prefix=@exec_prefix@
24mandir=@mandir@
25docdir=@prefix@/share/doc/rp-pppoe-$(VERSION)
26install=@INSTALL@
27install_dir=@INSTALL@ -d
28sbindir=@sbindir@
29
30# Plugin for pppd on Linux
31LINUX_KERNELMODE_PLUGIN=@LINUX_KERNELMODE_PLUGIN@
32PPPD_INCDIR=@PPPD_INCDIR@
33
34# Licensed version
35LIC_INCDIR=@LIC_INCDIR@
36LIC_LIBDIR=@LIC_LIBDIR@
37LIC_LIB=@LIC_LIB@
38LIC_DEFINE=@LIC_DEFINE@
39
40# PPPoE relay -- currently only supported on Linux
41PPPOE_RELAY=@PPPOE_RELAY@
42
43# Program paths
44PPPOE_PATH=$(sbindir)/pppoe
45PPPD_PATH=@PPPD@
46
47# Include ServPoET version if we're building for ServPoET
48@LIC_MAKEFILE_INCLUDE@
49
50# Kernel-mode plugin gets installed here.
51PLUGIN_DIR=/etc/ppp/plugins
52PLUGIN_PATH=$(PLUGIN_DIR)/rp-pppoe.so
53
54# Configuration file paths
55PPPOESERVER_PPPD_OPTIONS=/etc/ppp/pppoe-server-options
56
57PATHS='-DPPPOE_PATH="$(PPPOE_PATH)"' '-DPPPD_PATH="$(PPPD_PATH)"' \
58	'-DPLUGIN_PATH="$(PLUGIN_PATH)"' \
59	'-DPPPOE_SERVER_OPTIONS="$(PPPOESERVER_PPPD_OPTIONS)"'
60
61CFLAGS= @CFLAGS@ $(LIC_INCDIR) $(DEFINES) $(LIC_DEFINE) $(PATHS) -Ilibevent
62TARGETS=@TARGETS@
63PPPOE_SERVER_LIBS=$(LIC_LIBDIR) $(LIC_LIB)
64LDFLAGS= @LDFLAGS@
65
66all: $(TARGETS)
67	@echo ""
68	@echo "Type 'make install' as root to install the software."
69
70pppoe-sniff: pppoe-sniff.o if.o common.o debug.o
71	@CC@ -o $@ $^ $(LDFLAGS)
72
73pppoe-server: pppoe-server.o if.o debug.o common.o md5.o libevent/libevent.a @PPPOE_SERVER_DEPS@
74	@CC@ -o $@ @RDYNAMIC@ $^ $(LDFLAGS) $(PPPOE_SERVER_LIBS) -Llibevent -levent
75
76pppoe: pppoe.o if.o debug.o common.o ppp.o discovery.o
77	@CC@ -o $@ $^ $(LDFLAGS)
78
79pppoe-relay: relay.o if.o debug.o common.o
80	@CC@ -o $@ $^ $(LDFLAGS)
81
82pppoe.o: pppoe.c pppoe.h
83	@CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o $@ $<
84
85discovery.o: discovery.c pppoe.h
86	@CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o $@ $<
87
88ppp.o: ppp.c pppoe.h
89	@CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o $@ $<
90
91md5.o: md5.c md5.h
92	@CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o $@ $<
93
94pppoe-server.o: pppoe-server.c pppoe.h @PPPOE_SERVER_DEPS@
95	@CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o $@ $<
96
97pppoe-sniff.o: pppoe-sniff.c pppoe.h
98	@CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o $@ $<
99
100if.o: if.c pppoe.h
101	@CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o $@ $<
102
103libevent/libevent.a:
104	cd libevent && $(MAKE) DEFINES="$(DEFINES)"
105
106common.o: common.c pppoe.h
107	@CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o $@ $<
108
109debug.o: debug.c pppoe.h
110	@CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o $@ $<
111
112relay.o: relay.c relay.h pppoe.h
113	@CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o $@ $<
114
115# Linux-specific plugin
116rp-pppoe.so: plugin/plugin.o plugin/libplugin.a
117	@CC@ -o $@ -shared $^ $(LDFLAGS)
118
119plugin/plugin.o: plugin.c
120	@CC@ -DPLUGIN=1 '-DRP_VERSION="$(VERSION)"' $(CFLAGS) -I$(PPPD_INCDIR) -c -o $@ -fPIC $<
121
122plugin/libplugin.a: plugin/discovery.o plugin/if.o plugin/common.o plugin/debug.o
123	ar -rc $@ $^
124
125plugin/discovery.o: discovery.c
126	@CC@ -DPLUGIN=1 $(CFLAGS) -I$(PPPD_INCDIR) -c -o $@ -fPIC $<
127
128plugin/if.o: if.c
129	@CC@ -DPLUGIN=1 $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o $@ -fPIC $<
130
131plugin/debug.o: debug.c
132	@CC@ -DPLUGIN=1 $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o $@ -fPIC $<
133
134plugin/common.o: common.c
135	@CC@ -DPLUGIN=1 $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o $@ -fPIC $<
136
137install: all
138	-mkdir -p $(DESTDIR)$(sbindir)
139	$(install) -m 755 pppoe $(DESTDIR)$(sbindir)
140	$(install) -m 755 pppoe-server $(DESTDIR)$(sbindir)
141	if test -x licensed-only/pppoe-server-control ; then $(install) -m 755 licensed-only/pppoe-server-control $(DESTDIR)$(sbindir); fi
142	if test -x pppoe-relay ; then $(install) -m 755 pppoe-relay $(DESTDIR)$(sbindir); fi
143	if test -x pppoe-sniff; then $(install) -m 755 pppoe-sniff $(DESTDIR)$(sbindir); fi
144	$(install) -m 755 ../scripts/pppoe-connect $(DESTDIR)$(sbindir)
145	$(install) -m 755 ../scripts/pppoe-start $(DESTDIR)$(sbindir)
146	$(install) -m 755 ../scripts/pppoe-status $(DESTDIR)$(sbindir)
147	$(install) -m 755 ../scripts/pppoe-stop $(DESTDIR)$(sbindir)
148	$(install) -m 755 ../scripts/pppoe-setup $(DESTDIR)$(sbindir)
149	-mkdir -p $(DESTDIR)$(docdir)
150	$(install) -m 644 ../doc/CHANGES $(DESTDIR)$(docdir)
151	$(install) -m 644 ../doc/KERNEL-MODE-PPPOE $(DESTDIR)$(docdir)
152	$(install) -m 644 ../doc/HOW-TO-CONNECT $(DESTDIR)$(docdir)
153	$(install) -m 644 ../doc/LICENSE $(DESTDIR)$(docdir)
154	$(install) -m 644 ../README $(DESTDIR)$(docdir)
155	$(install) -m 644 ../SERVPOET $(DESTDIR)$(docdir)
156	$(install) -m 644 ../configs/pap-secrets $(DESTDIR)$(docdir)
157	-mkdir -p $(DESTDIR)$(mandir)/man8
158	for i in $(TARGETS) ; do \
159		if test -f ../man/$$i.8 ; then \
160			$(install) -m 644 ../man/$$i.8 $(DESTDIR)$(mandir)/man8 || exit 1; \
161		fi; \
162	done
163	$(install) -m 644 ../man/pppoe-start.8 $(DESTDIR)$(mandir)/man8
164	$(install) -m 644 ../man/pppoe-stop.8 $(DESTDIR)$(mandir)/man8
165	$(install) -m 644 ../man/pppoe-status.8 $(DESTDIR)$(mandir)/man8
166	$(install) -m 644 ../man/pppoe-connect.8 $(DESTDIR)$(mandir)/man8
167	$(install) -m 644 ../man/pppoe-setup.8 $(DESTDIR)$(mandir)/man8
168	-mkdir -p $(DESTDIR)$(mandir)/man5
169	$(install) -m 644 ../man/pppoe.conf.5 $(DESTDIR)$(mandir)/man5
170	-mkdir -p $(DESTDIR)/etc/ppp
171	-mkdir -p $(DESTDIR)$(PLUGIN_DIR)
172	-echo "# Directory created by rp-pppoe for kernel-mode plugin" > $(DESTDIR)$(PLUGIN_DIR)/README
173	@if test -r rp-pppoe.so; then $(install) -m 755 rp-pppoe.so $(DESTDIR)$(PLUGIN_DIR); fi
174	@for i in pppoe.conf firewall-standalone firewall-masq ; do \
175		if [ ! -f $(DESTDIR)/etc/ppp/$$i ] ; then \
176			$(install) -m 644 ../configs/$$i $(DESTDIR)/etc/ppp ; \
177		else \
178			echo "NOT overwriting existing $(DESTDIR)/etc/ppp/$$i" ;\
179			$(install) -m 644 ../configs/$$i $(DESTDIR)/etc/ppp/$$i-$(VERSION) ;\
180		fi ;\
181	done
182	@if [ ! -f $(DESTDIR)$(PPPOESERVER_PPPD_OPTIONS) ] ; then \
183		$(install) -m 644 ../configs/pppoe-server-options $(DESTDIR)$(PPPOESERVER_PPPD_OPTIONS) ; \
184	else \
185		echo "NOT overwriting existing $(DESTDIR)$(PPPOESERVER_PPPD_OPTIONS)"; \
186		$(install) -m 644 ../configs/pppoe-server-options $(DESTDIR)$(PPPOESERVER_PPPD_OPTIONS)-example ; \
187	fi
188	@if [ -f /etc/redhat-release ] ; then \
189		echo "Looks like a Red Hat system; installing $(DESTDIR)/etc/rc.d/init.d/pppoe" ; \
190		mkdir -p $(DESTDIR)/etc/rc.d/init.d ;\
191		$(install) -m 755 ../scripts/pppoe-init $(DESTDIR)/etc/rc.d/init.d/pppoe ; \
192	fi
193	@if [ -f /etc/turbolinux-release ] ; then \
194		echo "Looks like a TurboLinux system; installing $(DESTDIR)/etc/rc.d/init.d/pppoe" ; \
195		mkdir -p $(DESTDIR)/etc/rc.d/init.d ;\
196		$(install) -m 755 ../scripts/pppoe-init-turbolinux $(DESTDIR)/etc/rc.d/init.d/pppoe ; \
197	fi
198	@if [ -f /etc/SuSE-release ] ; then \
199		echo "Looks like a SuSE Linux system; installing $(DESTDIR)/etc/rc.d/init.d/pppoe" ; \
200		mkdir -p $(DESTDIR)/etc/rc.d/init.d ;\
201		$(install) -m 755 ../scripts/pppoe-init-suse $(DESTDIR)/etc/rc.d/init.d/pppoe ; \
202	fi
203
204	@if [ -f l2tp/handlers/sync-pppd.so ] ; then \
205		mkdir -p $(DESTDIR)/usr/lib/l2tp/plugins ; \
206		$(install) -m 755 l2tp/handlers/sync-pppd.so $(DESTDIR)/usr/lib/l2tp/plugins ; \
207		mkdir -p $(DESTDIR)/etc/l2tp ; \
208		$(install) -m 600 l2tp/l2tp.conf $(DESTDIR)/etc/l2tp/l2tp.conf.example ; \
209	fi
210	@echo ""
211	@echo "Type 'pppoe-setup' to configure the software."
212
213servpoet-tgz: distro-servpoet
214	cd .. && tar cvf servpoet-$(VERSION)$(BETA).tar servpoet-$(VERSION)$(BETA)
215	gzip -f -v -9 ../servpoet-$(VERSION)$(BETA).tar
216	rm -rf ../servpoet-$(VERSION)$(BETA)
217
218tgz: distro
219	cd .. && tar cvf rp-pppoe-$(VERSION)$(BETA).tar rp-pppoe-$(VERSION)$(BETA)
220	gzip -f -v -9 ../rp-pppoe-$(VERSION)$(BETA).tar
221	rm -rf ../rp-pppoe-$(VERSION)$(BETA)
222
223distro-servpoet: distro
224	cp ../servpoet.spec ../rp-pppoe-$(VERSION)$(BETA)
225	$(MAKE) -C licensed-only distro VERSION=$(VERSION) BETA=$(BETA)
226	mv ../rp-pppoe-$(VERSION)$(BETA) ../servpoet-$(VERSION)$(BETA)
227
228distro:
229	rm -rf ../rp-pppoe-$(VERSION)$(BETA)
230	mkdir ../rp-pppoe-$(VERSION)$(BETA)
231	for i in README SERVPOET go go-gui rp-pppoe.spec ; do \
232		cp ../$$i ../rp-pppoe-$(VERSION)$(BETA) || exit 1; \
233	done
234	mkdir ../rp-pppoe-$(VERSION)$(BETA)/gui
235	for i in en.msg ja.msg Makefile.in tkpppoe.in wrapper.c tkpppoe.1 pppoe-wrapper.1 ; do \
236		cp ../gui/$$i ../rp-pppoe-$(VERSION)$(BETA)/gui || exit 1; \
237	done
238	mkdir ../rp-pppoe-$(VERSION)$(BETA)/gui/html
239	for i in mainwin-busy.png mainwin-nonroot.png mainwin.png props-advanced.png props-basic.png props-nic.png props-options.png tkpppoe.html ; do \
240		cp ../gui/html/$$i ../rp-pppoe-$(VERSION)$(BETA)/gui/html || exit 1; \
241	done
242	mkdir ../rp-pppoe-$(VERSION)$(BETA)/configs
243	for i in firewall-masq firewall-standalone pap-secrets pppoe-server-options pppoe.conf ; do \
244		cp ../configs/$$i ../rp-pppoe-$(VERSION)$(BETA)/configs || exit 1; \
245	done
246	mkdir ../rp-pppoe-$(VERSION)$(BETA)/doc
247	for i in CHANGES KERNEL-MODE-PPPOE HOW-TO-CONNECT LICENSE PROBLEMS ; do \
248		cp ../doc/$$i ../rp-pppoe-$(VERSION)$(BETA)/doc || exit 1; \
249	done
250	mkdir ../rp-pppoe-$(VERSION)$(BETA)/man
251	for i in pppoe-connect.8 pppoe-setup.8 pppoe-start.8 pppoe-status.8 pppoe-stop.8 pppoe-server.8 pppoe-sniff.8 pppoe.8 pppoe-relay.8 pppoe.conf.5 ; do \
252		cp ../man/$$i ../rp-pppoe-$(VERSION)$(BETA)/man || exit 1; \
253	done
254	mkdir ../rp-pppoe-$(VERSION)$(BETA)/scripts
255	for i in pppoe-connect.in pppoe-init-suse.in pppoe-init-turbolinux.in pppoe-init.in pppoe-setup.in pppoe-start.in pppoe-stop.in pppoe-status ; do \
256		cp ../scripts/$$i ../rp-pppoe-$(VERSION)$(BETA)/scripts || exit 1; \
257	done
258	mkdir ../rp-pppoe-$(VERSION)$(BETA)/src
259	for i in Makefile.in install-sh common.c config.h.in configure configure.in debug.c discovery.c if.c md5.c md5.h ppp.c pppoe-server.c pppoe-sniff.c pppoe.c pppoe.h pppoe-server.h plugin.c relay.c relay.h ; do \
260		cp ../src/$$i ../rp-pppoe-$(VERSION)$(BETA)/src || exit 1; \
261	done
262	mkdir ../rp-pppoe-$(VERSION)$(BETA)/src/libevent
263	for i in Makefile.in event.c event.h event_tcp.c event_tcp.h eventpriv.h hash.c hash.h event_sig.c ; do \
264		cp ../src/libevent/$$i ../rp-pppoe-$(VERSION)$(BETA)/src/libevent || exit 1; \
265	done
266	mkdir ../rp-pppoe-$(VERSION)$(BETA)/src/plugin
267
268distro-beta: beta-check
269	$(MAKE) distro BETA=-BETA-$(BETA)
270
271tgz-beta: beta-check
272	$(MAKE) tgz BETA=-BETA-$(BETA)
273
274beta-check:
275	@if test "$(BETA)" = "" ; then \
276		echo "Usage: make distro-beta BETA=<x>"; \
277		exit 1; \
278	fi
279
280rpms: tgz
281	cp ../rp-pppoe-$(VERSION).tar.gz /usr/src/redhat/SOURCES
282	gpg --detach-sign /usr/src/redhat/SOURCES/rp-pppoe-$(VERSION).tar.gz
283	cd ..; \
284	rpm -ba rp-pppoe.spec
285	rpm --addsign /usr/src/redhat/SRPMS/rp-pppoe-$(VERSION)-1.src.rpm \
286		/usr/src/redhat/RPMS/i386/rp-pppoe-$(VERSION)-1.i386.rpm \
287		/usr/src/redhat/RPMS/i386/rp-pppoe-gui-$(VERSION)-1.i386.rpm
288
289servpoet-rpms: servpoet-tgz
290	cp ../servpoet-$(VERSION).tar.gz /usr/src/redhat/SOURCES
291	cd .. && rpm -ba servpoet.spec
292
293clean:
294	rm -f *.o pppoe-relay pppoe pppoe-sniff pppoe-server core rp-pppoe.so plugin/*.o plugin/libplugin.a *~
295	test -f licensed-only/Makefile && $(MAKE) -C licensed-only clean || true
296	test -f libevent/Makefile && $(MAKE) -C libevent clean || true
297	test -f l2tp/Makefile && $(MAKE) -C l2tp clean || true
298
299distclean: clean
300	rm -f Makefile config.h config.cache config.log config.status
301	rm -f libevent/Makefile
302	rm -f ../scripts/pppoe-connect ../scripts/pppoe-start ../scripts/pppoe-stop ../scripts/pppoe-init ../scripts/pppoe-setup ../scripts/pppoe-init-suse ../scripts/pppoe-init-turbolinux
303
304update-version:
305	sed -e 's/^Version: .*$$/Version: $(VERSION)/' ../rp-pppoe.spec > ../rp-pppoe.spec.new && mv ../rp-pppoe.spec.new ../rp-pppoe.spec
306	sed -e 's+^Source: .*$$+Source: http://www.roaringpenguin.com/pppoe/rp-pppoe-$(VERSION).tar.gz+' ../rp-pppoe.spec > ../rp-pppoe.spec.new && mv ../rp-pppoe.spec.new ../rp-pppoe.spec
307	test -f ../servpoet.spec && sed -e 's/^Version: .*$$/Version: $(VERSION)/' ../servpoet.spec > ../servpoet.spec.new && mv ../servpoet.spec.new ../servpoet.spec || true
308	test -f ../servpoet.spec && sed -e 's+^Source: .*$$+Source: http://www.roaringpenguin.com/pppoe/servpoet-$(VERSION).tar.gz+' ../servpoet.spec > ../servpoet.spec.new && mv ../servpoet.spec.new ../servpoet.spec || true
309
310# Convenience target for David!  Don't try to use this one.
311km:
312	./configure --enable-plugin=/home/dfs/Archive/PPP/ppp-2.4.0.pppoe4-patched-dfs
313
314licensed-only:
315	$(MAKE) -C licensed-only all VERSION=$(VERSION) SERVPOET_VERSION=$(SERVPOET_VERSION)
316
317l2tp: libevent/libevent.a
318	$(MAKE) -C l2tp all
319
320.PHONY: update-version
321
322.PHONY: clean
323
324.PHONY: distclean
325
326.PHONY: rpms
327
328.PHONY: licensed-only
329
330.PHONY: distro
331
332.PHONY: l2tp
333