diff --git a/src/makefiles/pgxs.mk b/src/makefiles/pgxs.mk
index a4263a6..a803be8 100644
--- a/src/makefiles/pgxs.mk
+++ b/src/makefiles/pgxs.mk
@@ -19,6 +19,8 @@
 #
 #   MODULES -- list of shared objects to be build from source file with
 #     same stem (do not include suffix in this list)
+#   PLUGINS -- list of shared plugin objects to be build from source file
+#     with same stem, shared objects will be installed under $PREFIX/lib/plugins
 #   DATA -- random files to install into $PREFIX/share/contrib
 #   DATA_built -- random files to install into $PREFIX/share/contrib,
 #     which need to be built first
@@ -66,7 +68,7 @@ endif
 
 override CPPFLAGS := -I$(srcdir) $(CPPFLAGS)
 
-ifdef MODULES
+ifneq (,$(MODULES)$(PLUGINS))
 override CFLAGS += $(CFLAGS_SL)
 SHLIB_LINK += $(BE_DLLLIBS)
 endif
@@ -75,7 +77,7 @@ ifdef PG_CPPFLAGS
 override CPPFLAGS := $(PG_CPPFLAGS) $(CPPFLAGS)
 endif
 
-all: $(PROGRAM) $(DATA_built) $(SCRIPTS_built) $(addsuffix $(DLSUFFIX), $(MODULES))
+all: $(PROGRAM) $(DATA_built) $(SCRIPTS_built) $(addsuffix $(DLSUFFIX), $(MODULES)) $(addsuffix $(DLSUFFIX), $(PLUGINS))
 
 ifdef MODULE_big
 # shared library parameters
@@ -110,6 +112,12 @@ ifdef MODULES
 	  $(INSTALL_SHLIB) $$file '$(DESTDIR)$(pkglibdir)'; \
 	done
 endif # MODULES
+ifdef PLUGINS
+	@for file in $(addsuffix $(DLSUFFIX), $(PLUGINS)); do \
+	  echo "$(INSTALL_SHLIB) $$file '$(DESTDIR)$(pkglibdir)/plugins'"; \
+	  $(INSTALL_SHLIB) $$file '$(DESTDIR)$(pkglibdir)/plugins'; \
+	done
+endif # PLUGINS
 ifdef DOCS
 ifdef docdir
 	@for file in $(addprefix $(srcdir)/, $(DOCS)); do \
@@ -148,6 +156,9 @@ endif
 ifneq (,$(MODULES)$(MODULE_big))
 	$(mkinstalldirs) '$(DESTDIR)$(pkglibdir)'
 endif
+ifdef PLUGINS
+	$(mkinstalldirs) '$(DESTDIR)$(pkglibdir)/plugins'
+endif
 ifdef DOCS
 ifdef docdir
 	$(mkinstalldirs) '$(DESTDIR)$(docdir)/contrib'
@@ -168,6 +179,9 @@ endif
 ifdef MODULES
 	rm -f $(addprefix '$(DESTDIR)$(pkglibdir)'/, $(addsuffix $(DLSUFFIX), $(MODULES)))
 endif
+ifdef PLUGINS
+	rm -f $(addprefix '$(DESTDIR)$(pkglibdir)'/plugins/, $(addsuffix $(DLSUFFIX), $(PLUGINS)))
+endif
 ifdef DOCS
 	rm -f $(addprefix '$(DESTDIR)$(docdir)'/contrib/, $(DOCS))
 endif
@@ -189,6 +203,9 @@ clean:
 ifdef MODULES
 	rm -f $(addsuffix $(DLSUFFIX), $(MODULES)) $(addsuffix .o, $(MODULES))
 endif
+ifdef PLUGINS
+	rm -f $(addsuffix $(DLSUFFIX), $(PLUGINS)) $(addsuffix .o, $(PLUGINS))
+endif
 ifdef DATA_built
 	rm -f $(DATA_built)
 endif
@@ -269,7 +286,7 @@ endif # REGRESS
 
 # STANDARD RULES
 
-ifneq (,$(MODULES)$(MODULE_big))
+ifneq (,$(MODULES)$(MODULE_big)$(PLUGINS))
 %.sql: %.sql.in
 	sed 's,MODULE_PATHNAME,$$libdir/$*,g' $< >$@
 endif
