From 4bf83597379523032663c8e95b3786a217c9a849 Mon Sep 17 00:00:00 2001
From: Hugh McMaster <hugh.mcmaster@outlook.com>
Date: Wed, 3 Apr 2019 21:36:03 +1100
Subject: [PATCH] Add pkg-config support for building applications and
 sub-agents

The netsnmp package should be used when building Net-SNMP applications.
The netsnmp-agent package should be used when building Net-SNMP subagents.

Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
[ bvanassche: edited makefile code and .pc files; added ./configure changes ]

Upstream-Status: Backport
https://sourceforge.net/p/net-snmp/patches/_discuss/thread/a0d66e91dd/f940/attachment/0001-Add-pkg-config-support-for-building-applications-and.patch
---
 Makefile.in         |  2 ++
 Makefile.rules      | 30 ++++++++++++++++++++++++++----
 configure           |  4 ++++
 configure.ac        |  1 +
 netsnmp-agent.pc.in | 12 ++++++++++++
 netsnmp.pc.in       | 12 ++++++++++++
 6 files changed, 57 insertions(+), 4 deletions(-)
 create mode 100644 netsnmp-agent.pc.in
 create mode 100644 netsnmp.pc.in

diff --git a/Makefile.in b/Makefile.in
index 9dbdde1353..ec972636c2 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -35,6 +35,7 @@ INSTALLBUILTHEADERS=include/net-snmp/net-snmp-config.h
 INSTALLBUILTINCLUDEHEADERS=@FEATUREHEADERS@
 INSTALLBINSCRIPTS=net-snmp-config net-snmp-create-v3-user
 INSTALLUCDHEADERS=ucd-snmp-config.h version.h mib_module_config.h
+INSTALL_PKGCONFIG=netsnmp.pc netsnmp-agent.pc
 
 #
 # other install rules.
@@ -275,6 +276,7 @@ configclean: makefileclean
 		libtool include/net-snmp/net-snmp-config.h \
 		net-snmp-config net-snmp-config-x configure-summary \
 		net-snmp-create-v3-user net-snmp-create-v3-user-x
+	rm -f *.pc
 	rm -f mibs/.index
 	rm -f include/net-snmp/agent/mib_module_config.h		\
 		include/net-snmp/agent/agent_module_config.h		\
diff --git a/Makefile.rules b/Makefile.rules
index 9e9e9009e5..e714f91e72 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -85,12 +85,14 @@ subdirs:
 # installlibs handles local, ucd and subdir libs. need to do subdir libs
 # before bins, sinze those libs may be needed for successful linking
 install: installlocalheaders @installucdheaders@ \
-         installlibs \
-         installlocalbin      installlocalsbin   \
+         installlibs         install_pkgconfig   \
+         installlocalbin     installlocalsbin    \
          installsubdirs      $(OTHERINSTALL)
 
-uninstall: uninstalllibs uninstallbin uninstallsbin uninstallheaders \
-           uninstallsubdirs $(OTHERUNINSTALL)
+uninstall: uninstalllibs     uninstall_pkgconfig \
+           uninstallbin      uninstallsbin       \
+           uninstallheaders                      \
+           uninstallsubdirs  $(OTHERUNINSTALL)
 
 installprogs: installbin installsbin
 
@@ -287,6 +289,26 @@ uninstalllibs:
 		done \
 	fi
 
+#
+# pkg-config files
+#
+install_pkgconfig: $(INSTALL_PKGCONFIG)
+	@if test "x$(INSTALL_PKGCONFIG)" != x; then			\
+		$(SHELL) $(top_srcdir)/mkinstalldirs $(INSTALL_PREFIX)$(libdir)/pkgconfig; \
+		for i in $(INSTALL_PKGCONFIG); do			\
+			echo "installing $$i in $(INSTALL_PREFIX)$(libdir)/pkgconfig"; \
+		done;							\
+		$(INSTALL) $(INSTALL_PKGCONFIG) $(INSTALL_PREFIX)$(libdir)/pkgconfig; \
+	fi
+
+uninstall_pkgconfig:
+	@if test "x$(INSTALL_PKGCONFIG)" != x; then			\
+		for i in $(INSTALL_PKGCONFIG); do			\
+			echo "removing $$i from $(INSTALL_PREFIX)$(libdir)/pkgconfig"; \
+			$(UNINSTALL) $(INSTALL_PREFIX)$(libdir)/pkgconfig/$$i;\
+		done;							\
+	fi
+
 #
 # normal bin binaries
 #
diff --git a/configure b/configure
index cad6b74486..8909bffe05 100755
--- a/configure
+++ b/configure
@@ -31717,6 +31717,8 @@ ac_config_files="$ac_config_files net-snmp-config:net-snmp-config.in"
 
 ac_config_files="$ac_config_files net-snmp-create-v3-user:net-snmp-create-v3-user.in"
 
+ac_config_files="$ac_config_files netsnmp.pc:netsnmp.pc.in netsnmp-agent.pc:netsnmp-agent.pc.in"
+
 ac_config_files="$ac_config_files dist/generation-scripts/gen-variables:dist/generation-scripts/gen-variables.in"
 
 ac_config_files="$ac_config_files local/snmpconf"
@@ -32740,6 +32742,8 @@ do
     "mibs/Makefile") CONFIG_FILES="$CONFIG_FILES mibs/Makefile:Makefile.top:mibs/Makefile.in:Makefile.rules" ;;
     "net-snmp-config") CONFIG_FILES="$CONFIG_FILES net-snmp-config:net-snmp-config.in" ;;
     "net-snmp-create-v3-user") CONFIG_FILES="$CONFIG_FILES net-snmp-create-v3-user:net-snmp-create-v3-user.in" ;;
+    "netsnmp.pc") CONFIG_FILES="$CONFIG_FILES netsnmp.pc:netsnmp.pc.in" ;;
+    "netsnmp-agent.pc") CONFIG_FILES="$CONFIG_FILES netsnmp-agent.pc:netsnmp-agent.pc.in" ;;
     "dist/generation-scripts/gen-variables") CONFIG_FILES="$CONFIG_FILES dist/generation-scripts/gen-variables:dist/generation-scripts/gen-variables.in" ;;
     "local/snmpconf") CONFIG_FILES="$CONFIG_FILES local/snmpconf" ;;
     "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
diff --git a/configure.ac b/configure.ac
index 1622b7c051..898b50f368 100644
--- a/configure.ac
+++ b/configure.ac
@@ -118,6 +118,7 @@ AC_CONFIG_FILES([net-snmp-config:net-snmp-config.in],
 		[chmod +x net-snmp-config])
 AC_CONFIG_FILES([net-snmp-create-v3-user:net-snmp-create-v3-user.in],
 		[chmod +x net-snmp-create-v3-user])
+AC_CONFIG_FILES([netsnmp.pc:netsnmp.pc.in netsnmp-agent.pc:netsnmp-agent.pc.in])
 AC_CONFIG_FILES([dist/generation-scripts/gen-variables:dist/generation-scripts/gen-variables.in])
 AC_CONFIG_FILES([local/snmpconf])
 
diff --git a/netsnmp-agent.pc.in b/netsnmp-agent.pc.in
new file mode 100644
index 0000000000..3a1c77bbf8
--- /dev/null
+++ b/netsnmp-agent.pc.in
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+includedir=@includedir@
+libdir=@libdir@
+
+Name: netsnmp-agent (@PACKAGE_NAME@)
+Description: SNMP (Simple Network Management Protocol) sub-agent SDK.
+URL: http://www.net-snmp.org
+Version: @PACKAGE_VERSION@
+Cflags: -I${includedir}
+Libs: -L${libdir} -lnetsnmpmibs -lnetsnmpagent -lnetsnmp
+Libs.private: @LDFLAGS@ @LMIBLIBS@ @LAGENTLIBS@ @PERLLDOPTS_FOR_APPS@ @LNETSNMPLIBS@ @LIBS@
diff --git a/netsnmp.pc.in b/netsnmp.pc.in
new file mode 100644
index 0000000000..0a1f5785a4
--- /dev/null
+++ b/netsnmp.pc.in
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+includedir=@includedir@
+libdir=@libdir@
+
+Name: netsnmp (@PACKAGE_NAME@)
+Description: SNMP (Simple Network Management Protocol) daemon and applications.
+URL: http://www.net-snmp.org
+Version: @PACKAGE_VERSION@
+Cflags: -I${includedir}
+Libs: -L${libdir} -lnetsnmp
+Libs.private: @LDFLAGS@ @LNETSNMPLIBS@ @LIBS@ @PERLLDOPTS_FOR_APPS@
-- 
2.26.2

