diff --git a/CMake/LofarMacros.cmake b/CMake/LofarMacros.cmake
index e665906bcff3e4b94595387eeeed0cad23635f01..7995cc094c79f6ee0607e7df796869b1224f2767 100644
--- a/CMake/LofarMacros.cmake
+++ b/CMake/LofarMacros.cmake
@@ -8,6 +8,7 @@
 #   lofar_add_sbin_program(name)
 #   lofar_add_sbin_scripts([name1 [name2 ..]])
 #   lofar_add_sysconf_files([name1 [name2 ..]])
+#   lofar_add_data_files([name1 [name2 ..]])
 #   lofar_add_test(name)
 #   lofar_create_target_symlink(target symlink)
 #   lofar_join_arguments(var)
@@ -196,6 +197,26 @@ if(NOT DEFINED LOFAR_MACROS_INCLUDED)
   endmacro(lofar_add_sysconf_files)
 
 
+  # --------------------------------------------------------------------------
+  # lofar_add_data_files([name1 [name2 ..]])
+  #
+  # Add system data files (architecture-independent data) that need to be
+  # installed into the <prefix>/share directory. Also create a symbolic link
+  # in <build-dir>/share to each of these files. The file names may contain
+  # a relative(!) path.
+  # --------------------------------------------------------------------------
+  macro(lofar_add_data_files)
+    foreach(_name ${ARGN})
+      get_filename_component(_path ${_name} PATH)
+      get_filename_component(_abs_name ${_name} ABSOLUTE)
+      file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/share/${_path})
+      execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
+        ${_abs_name} ${CMAKE_BINARY_DIR}/share/${_name})
+      install(FILES ${_name} DESTINATION share/${_path})
+    endforeach(_name ${ARGN})
+  endmacro(lofar_add_data_files)
+
+
   # --------------------------------------------------------------------------
   # lofar_add_test(name [source ...] [DEPENDS depend ...])
   #