1#
2# pppd makefile for Linux
3# $Id: Makefile.linux,v 1.70 2007/06/19 02:08:34 carlsonj Exp $
4#
5
6# Default installation locations
7DESTDIR = $(INSTROOT)@DESTDIR@
8BINDIR = $(DESTDIR)/sbin
9MANDIR = $(DESTDIR)/share/man/man8
10INCDIR = $(DESTDIR)/include
11
12TARGETS = pppd
13
14PPPDSRCS = main.c magic.c fsm.c lcp.c ipcp.c upap.c chap-new.c md5.c ccp.c \
15	   ecp.c ipxcp.c auth.c options.c sys-linux.c md4.c chap_ms.c \
16	   demand.c utils.c tty.c eap.c chap-md5.c session.c
17
18HEADERS = ccp.h session.h chap-new.h ecp.h fsm.h ipcp.h \
19	ipxcp.h lcp.h magic.h md5.h patchlevel.h pathnames.h pppd.h \
20	upap.h eap.h
21
22MANPAGES = pppd.8
23PPPDOBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap-new.o md5.o ccp.o \
24	   ecp.o auth.o options.o demand.o utils.o sys-linux.o ipxcp.o tty.o \
25	   eap.o chap-md5.o session.o
26
27#
28# include dependencies if present
29ifeq (.depend,$(wildcard .depend))
30include .depend
31endif
32
33# CC = gcc
34#
35COPTS = -O2 -pipe -Wall -g
36LIBS =
37
38# Uncomment the next 2 lines to include support for Microsoft's
39# MS-CHAP authentication protocol.  Also, edit plugins/radius/Makefile.linux.
40CHAPMS=y
41USE_CRYPT=y
42# Don't use MSLANMAN unless you really know what you're doing.
43#MSLANMAN=y
44# Uncomment the next line to include support for MPPE.  CHAPMS (above) must
45# also be enabled.  Also, edit plugins/radius/Makefile.linux.
46MPPE=y
47
48# Uncomment the next line to include support for PPP packet filtering.
49# This requires that the libpcap library and headers be installed
50# and that the kernel driver support PPP packet filtering.
51#FILTER=y
52
53# Uncomment the next line to enable multilink PPP (enabled by default)
54# Linux distributions: Please leave multilink ENABLED in your builds
55# of pppd!
56#HAVE_MULTILINK=y
57
58# Uncomment the next line to enable the TDB database (enabled by default.)
59# If you enable multilink, then TDB is automatically enabled also.
60# Linux distributions: Please leave TDB ENABLED in your builds.
61#USE_TDB=y
62
63#HAS_SHADOW=y
64#USE_PAM=y
65#HAVE_INET6=y
66
67# Enable plugins
68PLUGIN=y
69
70# Enable Microsoft proprietary Callback Control Protocol
71#CBCP=y
72
73# Enable EAP SRP-SHA1 authentication (requires libsrp)
74#USE_SRP=y
75
76# Use libutil
77#USE_LIBUTIL=y
78
79#MAXOCTETS=y
80
81INCLUDE_DIRS= -I../include
82
83COMPILE_FLAGS= #-DHAVE_PATHS_H -DIPX_CHANGE -DHAVE_MMAP
84
85CFLAGS= $(COPTS) $(COMPILE_FLAGS) $(EXTRACFLAGS) $(INCLUDE_DIRS) '-DDESTDIR="@DESTDIR@"'
86LDFLAGS += $(EXTRA_LDFLAGS)
87
88ifdef CHAPMS
89CFLAGS   += -DCHAPMS=1
90NEEDDES=y
91PPPDOBJS += md4.o chap_ms.o
92HEADERS	+= md4.h chap_ms.h
93ifdef MSLANMAN
94CFLAGS   += -DMSLANMAN=1
95endif
96ifdef MPPE
97CFLAGS   += -DMPPE=1
98endif
99endif
100
101# EAP SRP-SHA1
102ifdef USE_SRP
103CFLAGS	+= -DUSE_SRP -DOPENSSL -I/usr/local/ssl/include
104LIBS	+= -lsrp -L/usr/local/ssl/lib -lcrypto
105TARGETS	+= srp-entry
106EXTRAINSTALL = $(INSTALL) -s -c -m 555 srp-entry $(BINDIR)/srp-entry
107MANPAGES += srp-entry.8
108EXTRACLEAN += srp-entry.o
109NEEDDES=y
110else
111# OpenSSL has an integrated version of SHA-1, and its implementation
112# is incompatible with this local SHA-1 implementation.  We must use
113# one or the other, not both.
114PPPDSRCS += sha1.c
115HEADERS += sha1.h
116PPPDOBJS += sha1.o
117endif
118
119ifdef HAS_SHADOW
120CFLAGS   += -DHAS_SHADOW
121#LIBS     += -lshadow $(LIBS)
122endif
123
124#ifneq ($(wildcard /usr/include/crypt.h),)
125CFLAGS  += -DHAVE_CRYPT_H=1
126LIBS	+= -lcrypt
127#endif
128
129ifdef USE_LIBUTIL
130CFLAGS	+= -DHAVE_LOGWTMP=1
131LIBS	+= -lutil
132endif
133
134ifdef NEEDDES
135ifndef USE_CRYPT
136LIBS     += -ldes $(LIBS)
137else
138CFLAGS   += -DUSE_CRYPT=1
139endif
140PPPDOBJS += pppcrypt.o
141HEADERS += pppcrypt.h
142endif
143
144# For "Pluggable Authentication Modules", see ftp.redhat.com:/pub/pam/.
145ifdef USE_PAM
146CFLAGS   += -DUSE_PAM
147LIBS     += -lpam -ldl
148endif
149
150# Multi-linnk
151ifdef HAVE_MULTILINK
152	# Multilink implies the use of TDB
153	USE_TDB=y
154
155	CFLAGS += -DHAVE_MULTILINK
156	PPPDSRCS += multilink.c
157	PPPDOBJS += multilink.o
158endif
159
160# TDB
161ifdef USE_TDB
162	CFLAGS += -DUSE_TDB=1
163	PPPDSRCS += tdb.c spinlock.c
164	PPPDOBJS += tdb.o spinlock.o
165	HEADERS += tdb.h spinlock.h
166endif
167
168# Lock library binary for Linux is included in 'linux' subdirectory.
169ifdef LOCKLIB
170LIBS     += -llock
171CFLAGS   += -DLOCKLIB=1
172endif
173
174ifdef PLUGIN
175CFLAGS	+= -DPLUGIN
176LDFLAGS	+= -Wl,-E
177LIBS	+= -ldl
178endif
179
180ifdef FILTER
181ifneq ($(wildcard /usr/include/pcap-bpf.h),)
182LIBS    += -lpcap
183CFLAGS  += -DPPP_FILTER
184endif
185endif
186
187ifdef HAVE_INET6
188     PPPDSRCS += ipv6cp.c eui64.c
189     HEADERS  += ipv6cp.h eui64.h
190     PPPDOBJS += ipv6cp.o eui64.o
191     CFLAGS   += -DINET6=1
192endif
193
194ifdef CBCP
195     PPPDSRCS += cbcp.c
196     PPPDOBJS += cbcp.o
197     CFLAGS += -DCBCP_SUPPORT
198     HEADERS += cbcp.h
199endif
200
201ifdef MAXOCTETS
202     CFLAGS += -DMAXOCTETS
203endif
204
205INSTALL= install
206
207all: $(TARGETS)
208
209install: pppd
210	mkdir -p $(BINDIR) $(MANDIR)
211	$(EXTRAINSTALL)
212	$(INSTALL) -s -c -m 555 pppd $(BINDIR)/pppd
213	if chgrp pppusers $(BINDIR)/pppd 2>/dev/null; then \
214	  chmod o-rx,u+s $(BINDIR)/pppd; fi
215	$(INSTALL) -c -m 444 pppd.8 $(MANDIR)
216
217pppd: $(PPPDOBJS)
218	$(CC) $(CFLAGS) $(LDFLAGS) -o pppd $(PPPDOBJS) $(LIBS)
219
220srp-entry:	srp-entry.c
221	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ srp-entry.c $(LIBS)
222
223install-devel:
224	mkdir -p $(INCDIR)/pppd
225	$(INSTALL) -c -m 644 $(HEADERS) $(INCDIR)/pppd
226
227clean:
228	rm -f $(PPPDOBJS) $(EXTRACLEAN) $(TARGETS) *~ #* core
229
230depend:
231	$(CPP) -M $(CFLAGS) $(PPPDSRCS) >.depend
232