-CC = gcc
-CFLAGS = -g -O2 -I.. -I../../include
-LDFLAGS = -shared
+CROSS_COMPILE=@CROSS_COMPILE@
+CC=$(CROSS_COMPILE)@CC@
+COPTS=@CFLAGS@
-all: minconn.so passprompt.so
+PREFIX = @DESTDIR@
+DESTDIR = $(INSTROOT)$(PREFIX)
+BINDIR = $(DESTDIR)/sbin
+MANDIR = $(DESTDIR)/share/man/man8
+LIBDIR = $(INSTROOT)@LIBDIR@
+INCDIR = $(INSTROOT)@INCDIR@
+VERSION = @VERSION@
+PLUGINDIR = $(LIBDIR)/pppd/$(VERSION)
-minconn.so: minconn.c
- $(CC) -o $@ $(LDFLAGS) $(CFLAGS) minconn.c
+CFLAGS = $(COPTS) -I.. -I../../include -fPIC
+LDFLAGS_SHARED = -shared
+INSTALL = install
-passprompt.so: passprompt.c
- $(CC) -o $@ $(LDFLAGS) $(CFLAGS) passprompt.c
+# EAP-TLS
+CFLAGS += -DUSE_EAPTLS=1
+
+SUBDIRS := pppoe pppoatm pppol2tp
+# Uncomment the next line to include the radius authentication plugin
+SUBDIRS += radius
+PLUGINS := minconn.so passprompt.so passwordfd.so winbind.so
+
+# This setting should match the one in ../Makefile.linux
+MPPE=y
+
+ifdef MPPE
+CFLAGS += -DMPPE=1
+endif
+
+# include dependencies if present
+ifeq (.depend,$(wildcard .depend))
+include .depend
+endif
+
+all: $(PLUGINS)
+ for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d all || exit $$?; done
+
+%.so: %.c
+ $(CC) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED) $(CFLAGS) $^
+
+install: $(PLUGINS)
+ $(INSTALL) -d $(PLUGINDIR)
+ $(INSTALL) $? $(PLUGINDIR)
+ for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d install || exit $$?; done
+
+clean:
+ rm -f *.o *.so *.a
+ for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d clean || exit $$?; done
+
+depend:
+ $(CPP) -M $(CFLAGS) *.c >.depend
+ for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d depend || exit $$?; done