From 750475927f15964be39a8bdda8ea2f57c764f846 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Eivind=20N=C3=A6ss?= Date: Fri, 23 Apr 2021 22:26:06 -0700 Subject: [PATCH] Add pkgconfig support to PPP project (#270) This adds pppd.pc into $(INSTROOT)/$(LIBDIR)/pkgconfig. On some distributions this would be /lib/pkgconfig, or /usr/lib/pkgconfig, but other distributions may consider specifying --libdir=/usr/lib/x86_x64-linux-gnu/ and the pkgconfig directory would be under that. Allowing --libdir to be specified at configure time fixes #223, providing pkgconfig support fixes #19 and allows third party packages pickup the plugin directory. Manually cherry picking parts of two commits by @lkundrak from: https://github.com/NetworkManager/ppp/tree/lr/pkgconfig Mainly, the difference between the original commit is not to replace DESTDIR with "prefix". Leave DESTDIR alone, and add needed pkgconfig (pppd.pc.in) as a part of the linux distribution (previously in pppd/plugin directory). This fixes GitHub issues: #19 #47 and #223 Signed-off-by: Eivind Naess --- .gitignore | 1 + chat/Makefile.linux | 3 ++- configure | 29 ++++++++++++++++++++++++---- linux/pppd.pc.in | 11 +++++++++++ pppd/Makefile.linux | 12 +++++++++--- pppd/plugins/Makefile.linux | 14 ++++++++------ pppd/plugins/pppoatm/Makefile.linux | 13 +++++++------ pppd/plugins/pppoe/Makefile.linux | 15 +++++++------- pppd/plugins/pppol2tp/Makefile.linux | 13 +++++++------ pppd/plugins/radius/Makefile.linux | 17 ++++++++-------- pppdump/Makefile.linux | 3 ++- pppstats/Makefile.linux | 3 ++- 12 files changed, 91 insertions(+), 43 deletions(-) create mode 100644 linux/pppd.pc.in diff --git a/.gitignore b/.gitignore index eb7087c..c7445be 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,6 @@ *.o *.so *.a +*.pc *.cat8 Makefile diff --git a/chat/Makefile.linux b/chat/Makefile.linux index 407cc12..2cd1f3f 100644 --- a/chat/Makefile.linux +++ b/chat/Makefile.linux @@ -2,7 +2,8 @@ CROSS_COMPILE=@CROSS_COMPILE@ CC=$(CROSS_COMPILE)@CC@ COPTS=@CFLAGS@ -DESTDIR = $(INSTROOT)@DESTDIR@ +PREFIX = @DESTDIR@ +DESTDIR = $(INSTROOT)$(PREFIX) BINDIR = $(DESTDIR)/sbin MANDIR = $(DESTDIR)/share/man/man8 diff --git a/configure b/configure index b0c3d2b..d854679 100755 --- a/configure +++ b/configure @@ -4,6 +4,10 @@ # Where to install stuff by default DESTDIR=/usr/local SYSCONF=/etc +LIBDIR='${PREFIX}'/lib +INCDIR='${PREFIX}'/include + +VERSION=$(awk -F '"' '/VERSION/ { print $2; }' pppd/patchlevel.h) # Compile defaults CROSS_COMPILE= @@ -99,7 +103,7 @@ while [ $# -gt 0 ]; do val=`expr "x$arg" : 'x[^=]*=\(.*\)'` arg=`expr "x$arg" : 'x\([^=]*\)=.*'` ;; - --prefix|--sysconf) + --prefix|--sysconf|--libdir|--includedir) if [ $# -eq 0 ]; then echo "error: the $arg argument requires a value" 1>&2 exit 1 @@ -111,6 +115,8 @@ while [ $# -gt 0 ]; do case $arg in --prefix) DESTDIR=$val ;; --sysconfdir) SYSCONF=$val ;; + --libdir) LIBDIR=$val ; HAVE_LIBDIR_PARAM=1 ;; + --includedir) INCDIR=$val ; HAVE_INCDIR_PARAM=1 ;; --cross_compile) CROSS_COMPILE=$val ;; --cc) CC=$val ;; --cflags) CFLAGS=$val ;; @@ -121,9 +127,14 @@ mkmkf() { rm -f $2 if [ -f $1 ]; then echo " $2 <= $1" - sed -e "s,@DESTDIR@,$DESTDIR,g" -e "s,@SYSCONF@,$SYSCONF,g" \ - -e "s,@CROSS_COMPILE@,$CROSS_COMPILE,g" -e "s,@CC@,$CC,g" \ - -e "s|@CFLAGS@|$CFLAGS|g" $1 >$2 + sed -e "s,@DESTDIR@,$DESTDIR,g" \ + -e "s,@SYSCONF@,$SYSCONF,g" \ + -e "s,@LIBDIR@,$LIBDIR,g" \ + -e "s,@INCDIR@,$INCDIR,g" \ + -e "s,@CROSS_COMPILE@,$CROSS_COMPILE,g" \ + -e "s,@CC@,$CC,g" \ + -e "s|@CFLAGS@|$CFLAGS|g" \ + -e "s,@VERSION@,$VERSION,g" $1 >$2 fi } @@ -139,6 +150,16 @@ if [ -d "$ksrc" ]; then if [ -f $ksrc/Makefile.$makext$archvariant ]; then mkmkf $ksrc/Makefile.$makext$archvariant $ksrc/Makefile fi + if [ -f "$ksrc/pppd.pc.in" ] ; then + echo "Creating pkg-config file" + if [ ${HAVE_LIBDIR_PARAM:-0} -ne 1 ] ; then + LIBDIR='${prefix}'/lib + fi + if [ ${HAVE_INCDIR_PARAM:-0} -ne 1 ] ; then + INCDIR='${prefix}'/include + fi + mkmkf $ksrc/pppd.pc.in pppd/pppd.pc + fi else echo "Unable to locate kernel source $ksrc" exit 1 diff --git a/linux/pppd.pc.in b/linux/pppd.pc.in new file mode 100644 index 0000000..bb44595 --- /dev/null +++ b/linux/pppd.pc.in @@ -0,0 +1,11 @@ +prefix=@DESTDIR@ +exec_prefix=@DESTDIR@ +libdir=@LIBDIR@ +includedir=@INCDIR@ +version=@VERSION@ +plugindir=@LIBDIR@/pppd/${version} + +Name: pppd +Description: Point-to-Point Protocol (PPP) daemon +Version: @VERSION@ +Cflags: -I${includedir} diff --git a/pppd/Makefile.linux b/pppd/Makefile.linux index d04752d..f92f7c0 100644 --- a/pppd/Makefile.linux +++ b/pppd/Makefile.linux @@ -8,10 +8,13 @@ CC=$(CROSS_COMPILE)@CC@ COPTS=@CFLAGS@ # Default installation locations -DESTDIR = $(INSTROOT)@DESTDIR@ +PREFIX = @DESTDIR@ +DESTDIR = $(INSTROOT)$(PREFIX) BINDIR = $(DESTDIR)/sbin MANDIR = $(DESTDIR)/share/man/man8 -INCDIR = $(DESTDIR)/include +INCDIR = $(INSTROOT)@INCDIR@ +LIBDIR = $(INSTROOT)@LIBDIR@ +PKGCONFDIR = $(LIBDIR)/pkgconfig TARGETS = pppd @@ -238,11 +241,14 @@ INSTALL= install all: $(TARGETS) install: pppd - mkdir -p $(BINDIR) $(MANDIR) + $(INSTALL) -d $(BINDIR) + $(INSTALL) -d $(MANDIR) + $(INSTALL) -d $(PKGCONFDIR) $(EXTRAINSTALL) $(INSTALL) -c -m 755 pppd $(BINDIR)/pppd if chgrp pppusers $(BINDIR)/pppd 2>/dev/null; then \ chmod o-rx,u+s $(BINDIR)/pppd; fi + $(INSTALL) -c -m 644 pppd.pc $(PKGCONFDIR) $(INSTALL) -c -m 644 pppd.8 $(MANDIR) pppd: $(PPPDOBJS) diff --git a/pppd/plugins/Makefile.linux b/pppd/plugins/Makefile.linux index 6403e3d..0230da1 100644 --- a/pppd/plugins/Makefile.linux +++ b/pppd/plugins/Makefile.linux @@ -2,10 +2,14 @@ CROSS_COMPILE=@CROSS_COMPILE@ CC=$(CROSS_COMPILE)@CC@ COPTS=@CFLAGS@ -DESTDIR = $(INSTROOT)@DESTDIR@ +PREFIX = @DESTDIR@ +DESTDIR = $(INSTROOT)$(PREFIX) BINDIR = $(DESTDIR)/sbin MANDIR = $(DESTDIR)/share/man/man8 -LIBDIR = $(DESTDIR)/lib/pppd/$(VERSION) +LIBDIR = $(INSTROOT)@LIBDIR@ +INCDIR = $(INSTROOT)@INCDIR@ +VERSION = @VERSION@ +PLUGINDIR = $(LIBDIR)/pppd/$(VERSION) CFLAGS = $(COPTS) -I.. -I../../include -fPIC LDFLAGS_SHARED = -shared @@ -37,11 +41,9 @@ all: $(PLUGINS) %.so: %.c $(CC) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED) $(CFLAGS) $^ -VERSION = $(shell awk -F '"' '/VERSION/ { print $$2; }' ../patchlevel.h) - install: $(PLUGINS) - $(INSTALL) -d $(LIBDIR) - $(INSTALL) $? $(LIBDIR) + $(INSTALL) -d $(PLUGINDIR) + $(INSTALL) $? $(PLUGINDIR) for d in $(SUBDIRS); do $(MAKE) $(MFLAGS) -C $$d install || exit $$?; done clean: diff --git a/pppd/plugins/pppoatm/Makefile.linux b/pppd/plugins/pppoatm/Makefile.linux index 970eee1..d333026 100644 --- a/pppd/plugins/pppoatm/Makefile.linux +++ b/pppd/plugins/pppoatm/Makefile.linux @@ -3,10 +3,11 @@ CROSS_COMPILE=@CROSS_COMPILE@ CC=$(CROSS_COMPILE)@CC@ COPTS=@CFLAGS@ -DESTDIR = $(INSTROOT)@DESTDIR@ -LIBDIR = $(DESTDIR)/lib/pppd/$(VERSION) - -VERSION = $(shell awk -F '"' '/VERSION/ { print $$2; }' ../../patchlevel.h) +PREFIX = @DESTDIR@ +DESTDIR = $(INSTROOT)$(PREFIX) +LIBDIR = $(INSTROOT)@LIBDIR@ +VERSION = @VERSION@ +PLUGINDIR = $(LIBDIR)/pppd/$(VERSION) CFLAGS = $(COPTS) -I../.. -I../../../include -fPIC LDFLAGS_SHARED = -shared @@ -37,8 +38,8 @@ $(PLUGIN): $(PLUGIN_OBJS) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(LDFLAGS_SHARED) $^ $(LIBS) install: all - $(INSTALL) -d -m 755 $(LIBDIR) - $(INSTALL) -c -m 755 $(PLUGIN) $(LIBDIR) + $(INSTALL) -d -m 755 $(PLUGINDIR) + $(INSTALL) -c -m 755 $(PLUGIN) $(PLUGINDIR) clean: rm -f *.o *.so diff --git a/pppd/plugins/pppoe/Makefile.linux b/pppd/plugins/pppoe/Makefile.linux index b969871..3011302 100644 --- a/pppd/plugins/pppoe/Makefile.linux +++ b/pppd/plugins/pppoe/Makefile.linux @@ -16,12 +16,13 @@ CROSS_COMPILE=@CROSS_COMPILE@ CC=$(CROSS_COMPILE)@CC@ COPTS=@CFLAGS@ -DESTDIR = $(INSTROOT)@DESTDIR@ +PREFIX = @DESTDIR@ +DESTDIR = $(INSTROOT)$(PREFIX) BINDIR = $(DESTDIR)/sbin MANDIR = $(DESTDIR)/share/man/man8 -LIBDIR = $(DESTDIR)/lib/pppd/$(PPPDVERSION) - -PPPDVERSION = $(shell awk -F '"' '/VERSION/ { print $$2; }' ../../patchlevel.h) +LIBDIR = $(INSTROOT)@LIBDIR@ +VERSION = @VERSION@ +PLUGINDIR= $(LIBDIR)/pppd/$(VERSION) INSTALL = install LN_S = ln -sf @@ -42,10 +43,10 @@ pppoe.so: plugin.o discovery.o if.o common.o $(CC) $(LDFLAGS) -o pppoe.so -shared plugin.o discovery.o if.o common.o install: all - $(INSTALL) -d -m 755 $(LIBDIR) - $(INSTALL) -c -m 755 pppoe.so $(LIBDIR) + $(INSTALL) -d -m 755 $(PLUGINDIR) + $(INSTALL) -c -m 755 pppoe.so $(PLUGINDIR) # Symlink for backward compatibility - $(LN_S) pppoe.so $(LIBDIR)/rp-pppoe.so + $(LN_S) pppoe.so $(PLUGINDIR)/rp-pppoe.so $(INSTALL) -d -m 755 $(BINDIR) $(INSTALL) -c -m 755 pppoe-discovery $(BINDIR) $(INSTALL) -c -m 644 pppoe-discovery.8 $(MANDIR) diff --git a/pppd/plugins/pppol2tp/Makefile.linux b/pppd/plugins/pppol2tp/Makefile.linux index 1aa1c0b..0aa2858 100644 --- a/pppd/plugins/pppol2tp/Makefile.linux +++ b/pppd/plugins/pppol2tp/Makefile.linux @@ -3,10 +3,11 @@ CROSS_COMPILE=@CROSS_COMPILE@ CC=$(CROSS_COMPILE)@CC@ COPTS=@CFLAGS@ -DESTDIR = $(INSTROOT)/@DESTDIR@ -LIBDIR = $(DESTDIR)/lib/pppd/$(VERSION) - -VERSION = $(shell awk -F '"' '/VERSION/ { print $$2; }' ../../patchlevel.h) +PREFIX = @DESTDIR@ +DESTDIR = $(INSTROOT)$(PREFIX) +LIBDIR = $(INSTROOT)@LIBDIR@ +VERSION = @VERSION@ +PLUGINDIR = $(LIBDIR)/pppd/$(VERSION) CFLAGS = $(COPTS) -I. -I../.. -I../../../include -fPIC LDFLAGS_SHARED = -shared @@ -20,8 +21,8 @@ all: $(PLUGINS) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(LDFLAGS_SHARED) $^ $(LIBS) install: all - $(INSTALL) -d -m 755 $(LIBDIR) - $(INSTALL) -c -m 755 $(PLUGINS) $(LIBDIR) + $(INSTALL) -d -m 755 $(PLUGINDIR) + $(INSTALL) -c -m 755 $(PLUGINS) $(PLUGINDIR) clean: rm -f *.o *.so diff --git a/pppd/plugins/radius/Makefile.linux b/pppd/plugins/radius/Makefile.linux index 489aef2..26bacec 100644 --- a/pppd/plugins/radius/Makefile.linux +++ b/pppd/plugins/radius/Makefile.linux @@ -7,11 +7,12 @@ CROSS_COMPILE=@CROSS_COMPILE@ CC=$(CROSS_COMPILE)@CC@ COPTS=@CFLAGS@ -DESTDIR = $(INSTROOT)@DESTDIR@ +PREFIX = @DESTDIR@ +DESTDIR = $(INSTROOT)$(PREFIX) MANDIR = $(DESTDIR)/share/man/man8 -LIBDIR = $(DESTDIR)/lib/pppd/$(VERSION) - -VERSION = $(shell awk -F '"' '/VERSION/ { print $$2; }' ../../patchlevel.h) +LIBDIR = $(INSTROOT)@LIBDIR@ +VERSION = @VERSION@ +PLUGINDIR = $(LIBDIR)/pppd/$(VERSION) INSTALL = install @@ -39,10 +40,10 @@ endif all: $(PLUGIN) install: all - $(INSTALL) -d -m 755 $(LIBDIR) - $(INSTALL) -c -m 755 radius.so $(LIBDIR) - $(INSTALL) -c -m 755 radattr.so $(LIBDIR) - $(INSTALL) -c -m 755 radrealms.so $(LIBDIR) + $(INSTALL) -d -m 755 $(PLUGINDIR) + $(INSTALL) -c -m 755 radius.so $(PLUGINDIR) + $(INSTALL) -c -m 755 radattr.so $(PLUGINDIR) + $(INSTALL) -c -m 755 radrealms.so $(PLUGINDIR) $(INSTALL) -c -m 444 pppd-radius.8 $(MANDIR) $(INSTALL) -c -m 444 pppd-radattr.8 $(MANDIR) diff --git a/pppdump/Makefile.linux b/pppdump/Makefile.linux index a94187f..1c58151 100644 --- a/pppdump/Makefile.linux +++ b/pppdump/Makefile.linux @@ -2,7 +2,8 @@ CROSS_COMPILE=@CROSS_COMPILE@ CC=$(CROSS_COMPILE)@CC@ COPTS=@CFLAGS@ -DESTDIR = $(INSTROOT)@DESTDIR@ +PREFIX = @DESTDIR@ +DESTDIR = $(INSTROOT)$(PREFIX) BINDIR = $(DESTDIR)/sbin MANDIR = $(DESTDIR)/share/man/man8 diff --git a/pppstats/Makefile.linux b/pppstats/Makefile.linux index ddfe0cc..743ffaf 100644 --- a/pppstats/Makefile.linux +++ b/pppstats/Makefile.linux @@ -5,7 +5,8 @@ CROSS_COMPILE=@CROSS_COMPILE@ CC=$(CROSS_COMPILE)@CC@ COPTS=@CFLAGS@ -DESTDIR = $(INSTROOT)@DESTDIR@ +PREFIX = @DESTDIR@ +DESTDIR = $(INSTROOT)$(PREFIX) BINDIR = $(DESTDIR)/sbin MANDIR = $(DESTDIR)/share/man/man8 -- 2.39.2