diff --git a/src/lib/Makefile b/src/lib/Makefile
index b088e9bfd3714e6bd0d1acd7fd394a12fa46c333..f74b2f129932b3aa24fbbeef2e239637aa11384e 100644
--- a/src/lib/Makefile
+++ b/src/lib/Makefile
@@ -1,3 +1,7 @@
+
+# version number
+VERSION = $(shell if test -f ../../VERSION ; then grep -v \\\# ../../VERSION ; else echo "Unknown" ; fi )
+
 # here we build the list of modules to be linked in plumedKernel
 KERNEL_MODULES := $(addprefix ../,$(shell ../maketools/find_modules.sh))
 
@@ -100,6 +104,48 @@ endif
            sed "s|@_bindir_@|$(bindir)|" | \
            sed "s|@_includedir_@|$(includedir)|" \
 	   > install/modulefile
+	@cat pkgconfig.in | \
+           sed "s|@_SOEXT_@|$(SOEXT)|" | \
+           sed "s|@_program_name_@|$(program_name)|" | \
+           sed "s|@_libdir_@|$(libdir)|" | \
+           sed "s|@_libs_@||" | \
+           sed "s|@_bindir_@|$(bindir)|" | \
+           sed "s|@_includedir_@|$(includedir)|" | \
+           sed "s|@_prefix_@|$(prefix)|" | \
+           sed "s|@_exec_prefix_@|$(exec_prefix)|" | \
+           sed "s|@_VERSION_@|$(VERSION)|" | \
+           sed "s|@_conflicts_@||" | \
+           sed "s|@_cppflags_@||" | \
+           sed "s|@_extra_@||" \
+	   > install/pkgconfig
+	@cat pkgconfig.in | \
+           sed "s|@_SOEXT_@|$(SOEXT)|" | \
+           sed "s|@_program_name_@|$(program_name)|" | \
+           sed "s|@_libdir_@|$(libdir)|" | \
+           sed "s|@_libs_@||" | \
+           sed "s|@_bindir_@|$(bindir)|" | \
+           sed "s|@_includedir_@|$(includedir)|" | \
+           sed "s|@_prefix_@|$(prefix)|" | \
+           sed "s|@_exec_prefix_@|$(exec_prefix)|" | \
+           sed "s|@_VERSION_@|$(VERSION)|" | \
+           sed "s|@_conflicts_@||" | \
+           sed "s|@_cppflags_@|$(shell ../maketools/purge-d $(CPPFLAGS))|" | \
+           sed "s|@_extra_@| (full version, including internals)|" \
+	   > install/pkgconfigInternals
+	@cat pkgconfig.in | \
+           sed "s|@_SOEXT_@|$(SOEXT)|" | \
+           sed "s|@_program_name_@|$(program_name)Wrapper|" | \
+           sed "s|@_libdir_@|$(libdir)|" | \
+           sed "s|@_libs_@|$(LIBS)|" | \
+           sed "s|@_bindir_@|$(bindir)|" | \
+           sed "s|@_includedir_@|$(includedir)|" | \
+           sed "s|@_prefix_@|$(prefix)|" | \
+           sed "s|@_exec_prefix_@|$(exec_prefix)|" | \
+           sed "s|@_VERSION_@|$(VERSION)|" | \
+           sed "s|@_conflicts_@||" | \
+           sed "s|@_cppflags_@||" | \
+           sed "s|@_extra_@| (wrapper-only version, set PLUMED_KERNEL at runtime) |" \
+	   > install/pkgconfigWrapper
 
 ifdef LD_RO
 install/kernel.o: $(OBJ_KERNEL)
@@ -155,6 +201,7 @@ endif
 	# $(MAKE) uninstall
 	mkdir -p "$(DESTDIR)$(bindir)"
 	mkdir -p "$(DESTDIR)$(libdir)"
+	mkdir -p "$(DESTDIR)$(libdir)/pkgconfig"
 	mkdir -p "$(DESTDIR)$(includedir)/$(program_name)"
 	mkdir -p "$(DESTDIR)$(libdir)/$(program_name)/obj"
 	mkdir -p "$(DESTDIR)$(libdir)/$(program_name)/src/lib"
@@ -206,6 +253,12 @@ ifdef AR_CR
 endif
 # modulefile
 	cp install/modulefile "$(DESTDIR)$(libdir)/$(program_name)/modulefile"
+# pkgconfig files
+	cp install/pkgconfig "$(DESTDIR)$(libdir)/pkgconfig/$(program_name).pc"
+ifdef AR_CR
+	cp install/pkgconfigWrapper "$(DESTDIR)$(libdir)/pkgconfig/$(program_name)Wrapper.pc"
+endif
+	cp install/pkgconfigInternals "$(DESTDIR)$(libdir)/pkgconfig/$(program_name)Internals.pc"
 # vim syntax file
 	if test -d ../../vim/syntax ; then mkdir -p "$(DESTDIR)$(libdir)/$(program_name)" && cd ../../ && tar cf - vim/syntax | tar xf - -C "$(DESTDIR)$(libdir)/$(program_name)/" ; fi
 	if test -d ../../vim/help ; then mkdir -p "$(DESTDIR)$(libdir)/$(program_name)" && cd ../../ && tar cf - vim/help | tar xf - -C "$(DESTDIR)$(libdir)/$(program_name)/" ; fi
@@ -225,12 +278,13 @@ endif
 	@echo "Full name      : $(program_name)"
 	@echo
 	@echo "Setup your environment"
-	@echo "- Ensure this is in your execution path : $(bindir)"
-	@echo "- Ensure this is in your include path   : $(includedir)"
+	@echo "- Ensure this is in your execution path         : $(bindir)"
+	@echo "- Ensure this is in your include path           : $(includedir)"
 ifdef SOEXT
-	@echo "- Ensure this is in your library path   : $(libdir)"
+	@echo "- Ensure this is in your library path           : $(libdir)"
+	@echo "- Ensure this is in your PKG_CONFIG_PATH path   : $(libdir)/pkgconfig"
 	@echo "For runtime binding:"
-	@echo "- Set this environment variable         : PLUMED_KERNEL=$(libdir)/lib$(program_name)Kernel.$(SOEXT)"
+	@echo "- Set this environment variable                 : PLUMED_KERNEL=$(libdir)/lib$(program_name)Kernel.$(SOEXT)"
 endif
 	@echo
 	@echo "To create a tcl module that sets all the variables above, use this one as a starting point:"
@@ -243,6 +297,7 @@ endif
 	@echo $(bindir)/$(program_name)
 	@echo $(bindir)/$(program_name)-patch
 	@echo $(bindir)/$(program_name)-config
+	@echo $(libdir)/pkgconfig/$(program_name).pc
 ifdef SOEXT
 	@echo $(libdir)/lib$(program_name).$(SOEXT)
 	@echo $(libdir)/lib$(program_name)Kernel.$(SOEXT)
@@ -289,6 +344,7 @@ uninstall:
 	rm -f "$(DESTDIR)$(bindir)/bin/$(program_name)-config"
 	rm -f "$(DESTDIR)$(libdir)/lib$(program_name).$(SOEXT)"
 	rm -f "$(DESTDIR)$(libdir)/lib$(program_name)Kernel.$(SOEXT)"
+	rm -f "$(DESTDIR)$(libdir)/lib/pkgconfig/$(PLUMED_PROGRAM_NAME).pc"
 
 $(DIRS):
 	$(MAKE) -C $@ obj
diff --git a/src/lib/modulefile.in b/src/lib/modulefile.in
index 3f92600ada01fcf39b6bff95a77ccadb599247a3..ed466168d635b88c4e72f234d3ac26adc4d514dd 100644
--- a/src/lib/modulefile.in
+++ b/src/lib/modulefile.in
@@ -43,6 +43,7 @@ if { [module-info mode load] && [ info exists ::env(PLUMED_KERNEL) ] } {
 prepend-path  LIBRARY_PATH       $libdir
 prepend-path  LD_LIBRARY_PATH    $libdir
 prepend-path  DYLD_LIBRARY_PATH  $libdir
+prepend-path  PKG_CONFIG_PATH    $libdir/pkgconfig/
 setenv        PLUMED_KERNEL      $libdir/lib${progname}Kernel.$soext
 setenv        PLUMED_VIMPATH     $libdir/$progname/vim
 }
diff --git a/src/lib/pkgconfig.in b/src/lib/pkgconfig.in
new file mode 100644
index 0000000000000000000000000000000000000000..98f2c493ba912d3d926749bd3d9518e6bca8db53
--- /dev/null
+++ b/src/lib/pkgconfig.in
@@ -0,0 +1,12 @@
+prefix=@_prefix_@
+exec_prefix=@_exec_prefix_@
+includedir=@_includedir_@
+libdir=@_libdir_@
+
+Name: @_program_name_@
+Description: Plumed library @_extra_@
+URL: http://www.plumed.org
+Version: @_VERSION_@
+Cflags: -I${includedir} @_cppflags_@
+Libs: -L${libdir} -l@_program_name_@ @_libs_@
+Conflicts: @_conflicts_@
diff --git a/src/maketools/purge-d b/src/maketools/purge-d
new file mode 100755
index 0000000000000000000000000000000000000000..a05070e9818334b56a6ed1e268c45b24d0d575f1
--- /dev/null
+++ b/src/maketools/purge-d
@@ -0,0 +1,10 @@
+#! /bin/bash
+
+for d
+do
+  case "$d" in
+  (-DPACKAGE*) ;;
+  (*) echo -n " $d" ;;
+  esac
+done
+