diff --git a/src/Makefile b/src/Makefile
index 8a7800dc6a1e3e4797436b2338c825ff843c7e9c..177922bed328460a1036f66630960a367651461e 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -3,6 +3,13 @@ CFLAGS+=-I. -D_GNU_SOURCE
 CFLAGS+= -ggdb3 -Wall -Werror
 CFLAGS += -I/usr/include/libnl3
 
+header-files=cmdu.h cmdu_ackq.h 1905_tlvs.h i1905_wsc.h bufutil.h \
+	timer_impl.h i1905_extension.h
+
+lib-files=libmidgen.so libieee1905.so
+bin-files=ieee1905d
+
+
 OBJS =  cmdu_input.o  \
 	cmdu_output.o \
 	config.o \
@@ -52,7 +59,7 @@ extmod_files = $(foreach d, $(extmod_subdirs), $(extmod_sofile))
 
 
 
-.PHONY: all clean tests docs
+.PHONY: all clean tests docs install
 
 all: libmidgen.so libieee1905.so ieee1905d extmods tests
 
@@ -84,6 +91,10 @@ docs:
 	cp docs/latex/refman.pdf docs/ieee1905.pdf
 
 
+-include Makefile.inc
+
+install: install-headers install-libs install-bins
+	for i in $(extmod_subdirs); do [ -d $$i ] && $(MAKE) -C $$i install; done
 
 clean:
 	rm -f *.o *.so $(EXECS)
diff --git a/src/Makefile.inc b/src/Makefile.inc
new file mode 100644
index 0000000000000000000000000000000000000000..7911c44096c751cef96a2af95158eeca71e5c2ac
--- /dev/null
+++ b/src/Makefile.inc
@@ -0,0 +1,38 @@
+CP ?= cp -fpPR
+INSTALL ?= install
+INSTALL_DIR = $(INSTALL) -d -m 755
+INSTALL_BIN = $(INSTALL) -m 755
+INSTALL_DATA = $(INSTALL) -m 644
+INSTALL_CONF = $(INSTALL) -m 600
+INSTALL_LIB = $(CP)
+
+ROOTDIR:=$(shell pwd)
+INCDIR ?= /usr/include
+LIBDIR ?= /usr/lib
+BINDIR ?= /usr/sbin
+
+IEEE1905_PLUGINS_DIR:=$(DESTDIR)/$(LIBDIR)/ieee1905
+
+header-files ?= $(wildcard *.h)
+library-files ?= $(wildcard *.so*)
+bin-files ?=
+
+
+$(DESTDIR)/$(INCDIR)/%: %
+	$(INSTALL_DATA) -D $< $@
+
+$(DESTDIR)/$(LIBDIR)/%: %
+	$(INSTALL_DIR) $(DESTDIR)/$(LIBDIR)
+	$(INSTALL_LIB) $< $@
+
+$(DESTDIR)/$(BINDIR)/%: %
+	$(INSTALL_DIR) $(DESTDIR)/$(BINDIR)
+	$(INSTALL_BIN) $< $@
+
+export
+
+install-headers: $(addprefix $(DESTDIR)/$(INCDIR)/,$(header-files))
+
+install-libs: $(addprefix $(DESTDIR)/$(LIBDIR)/,$(library-files))
+
+install-bins: $(addprefix $(DESTDIR)/$(BINDIR)/,$(bin-files))
diff --git a/src/extensions/map/Makefile b/src/extensions/map/Makefile
index eacfa6acb63d69fe116ae086f89b4c572ab621aa..74e08de2e2ba0bc4f6c93a1e7b5d1775056063f4 100644
--- a/src/extensions/map/Makefile
+++ b/src/extensions/map/Makefile
@@ -24,5 +24,13 @@ libmaputil.so: $(UTIL-OBJS)
 $(MAP_PLUGIN): $(OBJS)
 	$(CC) $(CFLAGS) $(LDFLAGS) -shared -Wl,-soname,$@ -o $@ $^ -lmaputil
 
+header-files = map2.h map_module.h
+
+install:
+	$(INSTALL_DIR) $(IEEE1905_PLUGINS_DIR)
+	$(CP) $(MAP_PLUGIN) $(IEEE1905_PLUGINS_DIR)
+	$(CP) libmaputil.so $(DESTDIR)/$(LIBDIR)
+	$(INSTALL_DATA) $(header-files) $(DESTDIR)/$(INCDIR)
+
 clean:
 	rm -f *.o *.so*