diff --git a/.gitignore b/.gitignore
index c24a451f603a675b8a0b5568de535a7ca1b172a7..1950be2de476237e79c4689356a14ee8fdd2ec30 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,4 +25,6 @@ cachegrind.out*
 # Codelite (among others) project files
 *.project
 
+# Eclipse symbol file (output from make eclipsesym)
+eclipsesym.xml
 /toolchain
diff --git a/Makefile.include b/Makefile.include
index 8fe6fc825b58de69a1de3d96dd9cc86c784b73e9..e89fefcd9e3ce6c051f51671a374840ecba7ffba 100644
--- a/Makefile.include
+++ b/Makefile.include
@@ -285,6 +285,16 @@ objdump:
 		exit 1; }
 	$(PREFIX)objdump -S -D -h $(ELFFILE) | less
 
+# Generate an XML file containing all macro definitions and include paths for
+# use in Eclipse CDT
+.PHONY: eclipsesym eclipsesym.xml $(CURDIR)/eclipsesym.xml
+eclipsesym: $(CURDIR)/eclipsesym.xml
+eclipsesym.xml: $(CURDIR)/eclipsesym.xml
+
+$(CURDIR)/eclipsesym.xml:
+	$(AD)printf "%s\n" $(CC) $(CFLAGS) $(INCLUDES) | \
+		$(RIOTBASE)/dist/tools/eclipsesym/cmdline2xml.sh > $@
+
 # Extra make goals for testing and comparing changes.
 include $(RIOTBASE)/Makefile.buildtests
 
diff --git a/dist/tools/eclipsesym/README.md b/dist/tools/eclipsesym/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..2c757e10278d4ff5ba292a07776320f9aa58193d
--- /dev/null
+++ b/dist/tools/eclipsesym/README.md
@@ -0,0 +1,33 @@
+cmdline2xml.sh
+==============
+
+Export all command line include paths and macro definitions to an XML file
+suitable for import in Eclipse CDT.
+
+Instrucions
+-----------
+
+The Eclipse project must be located at "/RIOT" inside your Eclipse workspace,
+otherwise change cmdline2xml.sh accordingly (ECLIPSE_PROJECT_NAME=RIOT).
+
+In the shell:
+
+    cd to application directory (e.g. examples/hello-world)
+    make eclipsesym
+
+In Eclipse:
+
+1. Open the project properties, menu Project->Properties
+2. Select C/C++ General->Paths and Symbols
+3. (optional) Click Restore Defaults to delete any existing macros and include paths
+4. Click Import Settings...
+5. Select `eclipsesym.xml` in your application directory and press Finish
+6. Rebuild C/C++ index, menu Project->C/C++ Index->Rebuild
+
+All conditional compilation and all include paths should now resolve properly
+for your application.
+
+The file `eclipsesym.xml` is specific to the application being built and may
+differ depending on what modules are enabled and which platform is being built.
+Make sure that everything is set up properly in your shell and that regular
+`make all` works before running `make eclipsesym`
diff --git a/dist/tools/eclipsesym/cmdline2xml.sh b/dist/tools/eclipsesym/cmdline2xml.sh
new file mode 100755
index 0000000000000000000000000000000000000000..76acd65c19ea0c4ccac1c55c2c28f36e4637ece2
--- /dev/null
+++ b/dist/tools/eclipsesym/cmdline2xml.sh
@@ -0,0 +1,90 @@
+#!/bin/bash
+
+# Copyright (C) 2015 Eistec AB
+#
+# This file is subject to the terms and conditions of the GNU Lesser General
+# Public License v2.1. See the file LICENSE in the top level directory for more
+# details.
+
+# Author: Joakim Gebart <joakim.gebart@eistec.se>
+
+# Convert a GCC command line to Eclipse settings for import in
+# Project->Properties->C/C++ General->Paths and Symbols
+#
+# Tested on:
+#  Eclipse IDE for C/C++ Developers
+#
+#  Version: Luna Service Release 2 (4.4.2)
+#  Build id: 20150219-0600
+
+ECHO="printf %s\n"
+
+if [ $# -ne 0 ]; then
+    ${ECHO} "Usage: $0"
+    ${ECHO} "Read GCC command line arguments from stdin, output Eclipse XML to stdout"
+    ${ECHO} "Note: does not handle spaces inside macros and include paths at all."
+    exit 2
+fi
+
+XML_INSTRUCTIONS='
+<!--
+Instrucions:
+
+In Eclipse:
+1. Open the project properties, menu Project->Properties
+2. Select C/C++ General->Paths and Symbols
+2a. (optional) Click Restore Defaults to delete any existing macros and include paths
+3. Click Import Settings...
+4. Select this file and press Finish
+5. Rebuild C/C++ index, menu Project->C/C++ Index->Rebuild
+
+-->
+'
+XML_HEADER='<?xml version="1.0" encoding="UTF-8"?><cdtprojectproperties>'$'\n''<!-- Automatically generated from make eclipsesym -->'
+XML_FOOTER='</cdtprojectproperties>'
+XML_MACRO_SECTION_BEGIN='<section name="org.eclipse.cdt.internal.ui.wizards.settingswizards.Macros">'
+XML_INCLUDE_SECTION_BEGIN='<section name="org.eclipse.cdt.internal.ui.wizards.settingswizards.IncludePaths">'
+XML_SECTION_END='</section>'
+XML_MACRO_TEMPLATE='"<macro><name>"$1"</name><value>"$2"</value></macro>"'
+XML_INCLUDE_TEMPLATE='"<includepath workspace_path=\"true\">"$0"</includepath>"'
+LANGUAGES=( 'GNU C' 'GNU C++' 'Assembly' 'C Source File' 'C++ Source File' 'Assembly Source File' )
+ECLIPSE_PROJECT_NAME='RIOT'
+
+GCCCOMMANDLINE=$(cat)
+
+# Find all includes
+INCLUDES=$(${ECHO} "${GCCCOMMANDLINE}" | sed -e 's/ /\n/g' | egrep '^-I' | cut -c3-)
+
+# Parse and rewrite to project relative paths
+INCLUDES_REL=""
+for p in ${INCLUDES}; do
+    #ABSPATH=$(readlink -m "$p")
+    RELPATH=$(readlink -m "$p" | sed -e "s,^${RIOTBASE},/${ECLIPSE_PROJECT_NAME}/,")
+    INCLUDES_REL=${INCLUDES_REL}$'\n'${RELPATH}
+done
+
+# Grab macro definitions
+MACROS=$(${ECHO} "${GCCCOMMANDLINE}" | sed -e 's/ /\n/g' | egrep '^-D' | cut -c3-)
+
+# Output
+${ECHO} "${XML_HEADER}"
+${ECHO} "${XML_INSTRUCTIONS}"
+${ECHO} "${XML_INCLUDE_SECTION_BEGIN}"
+for l in "${LANGUAGES[@]}"; do
+    ${ECHO} "<language name=\"${l}\">"
+    ${ECHO} "${INCLUDES_REL}" | awk \
+        "{ if (\$0 != \"\") { print ${XML_INCLUDE_TEMPLATE}; } }" | \
+        sed -e 's,/[/]*,/,g'
+    ${ECHO} '</language>'
+done
+${ECHO} "${XML_SECTION_END}"
+${ECHO} "${XML_MACRO_SECTION_BEGIN}"
+for l in "${LANGUAGES[@]}"; do
+    ${ECHO} "<language name=\"${l}\">"
+    ${ECHO} "${MACROS}" | awk -F= \
+        "{ if (\$2 == \"\") { \$2 = \"1\" } print ${XML_MACRO_TEMPLATE}; }" | \
+        sed -e 's/\\"/"/g'
+    ${ECHO} '</language>'
+done
+${ECHO} "${XML_SECTION_END}"
+${ECHO} "${XML_FOOTER}"