diff --git a/LbConfiguration/data/DataPkgCMakeLists.tpl b/LbConfiguration/data/DataPkgCMakeLists.tpl
new file mode 100644
index 0000000000000000000000000000000000000000..58c6b6558669c2f16cf3ab5a4296775afc2b6c2c
--- /dev/null
+++ b/LbConfiguration/data/DataPkgCMakeLists.tpl
@@ -0,0 +1,22 @@
+set(dirname ${package_name})
+string(REPLACE "/" "_" targetname "$${dirname}")
+
+set($${dirname}_DIR $${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH "Location of $${dirname}" FORCE)
+set($${dirname}_XENV $${$${dirname}_DIR}/$${targetname}.xenv CACHE FILEPATH "$${dirname} environment file" FORCE)
+
+if(EXISTS $${CMAKE_CURRENT_SOURCE_DIR}/Makefile)
+  message(STATUS " building using make")
+  add_custom_target($${targetname} ALL
+                    make
+                    COMMENT "building $${dirname}"
+                    WORKING_DIRECTORY $${CMAKE_CURRENT_SOURCE_DIR})
+elseif(EXISTS $${CMAKE_CURRENT_SOURCE_DIR}/cmt/requirements)
+  message(STATUS " building using CMT")
+  set(cmtdir $${CMAKE_CURRENT_SOURCE_DIR}/cmt)
+  execute_process(COMMAND env PWD=$${cmtdir} cmt config
+                  WORKING_DIRECTORY $${cmtdir})
+  add_custom_target($${targetname} ALL
+                    env PWD=$${cmtdir} cmt make
+                    COMMENT "building $${dirname}"
+                    WORKING_DIRECTORY $${cmtdir})
+endif()
diff --git a/LbConfiguration/doc/release.notes b/LbConfiguration/doc/release.notes
index 2eb97c1fd80477a57318fef065d8e72589d1e324..00935cf0cea8d7f2e4405870479eda412c39fa5c 100644
--- a/LbConfiguration/doc/release.notes
+++ b/LbConfiguration/doc/release.notes
@@ -1,3 +1,7 @@
+2015-02-20  Marco Clemencic  <Marco.Clemencic@cern.ch>
+
+	LBCORE-751: add support for data packages checked out in a CMake-based project
+
 2015-02-13  Marco Clemencic  <Marco.Clemencic@cern.ch>
 
 	* lb-dev: removed reference to QMTest in lb-dev message
diff --git a/LbConfiguration/python/LbConfiguration/__init__.py b/LbConfiguration/python/LbConfiguration/__init__.py
index 171ad349672fa098cb4f7eb3e209c2ab41d89e38..71996d6104582d73c3fa135da869864ce6ee773b 100644
--- a/LbConfiguration/python/LbConfiguration/__init__.py
+++ b/LbConfiguration/python/LbConfiguration/__init__.py
@@ -1,6 +1,7 @@
 import External
 import Platform
 import Project
+import shutil
 
 
 def createProjectMakefile(dest, overwrite=False):
@@ -18,6 +19,7 @@ def createProjectMakefile(dest, overwrite=False):
 def createToolchainFile(dest, overwrite=False):
     '''Write the generic toolchain.cmake file needed by CMake-based projects.
     @param dest: destination filename
+    @param overwrite: flag to decide if an already present file has to be kept or not (default is False)
     '''
     import os, logging
     if overwrite or not os.path.exists(dest):
@@ -26,6 +28,22 @@ def createToolchainFile(dest, overwrite=False):
         f.write("include($ENV{LBUTILSROOT}/data/toolchain.cmake)\n")
         f.close()
 
+def createDataPackageCMakeLists(pkg, dest, overwrite=False):
+    '''Create the generic CMakeLists.txt file for data packages.
+    @param pkg: data package name
+    @param dest: destination filename
+    @param overwrite: flag to decide if an already present file has to be kept or not (default is False)
+    '''
+    import os, logging
+    from string import Template
+    if overwrite or not os.path.exists(dest):
+        logging.debug("Creating '%s'", dest)
+        tpl = Template(open(os.path.join(os.environ['LBCONFIGURATIONROOT'],
+                                         'data', 'DataPkgCMakeLists.tpl')).read())
+        f = open(dest, "w")
+        f.write(tpl.substitute(package_name=pkg))
+        f.close()
+
 def createEclipseConfiguration(dest, projectpath):
     """Create the configuration files for an Eclipse project in the directory
     'dest', setting CMTPROJECTPATH to projectpath.
diff --git a/LbRelease/doc/release.notes b/LbRelease/doc/release.notes
index 5cda62f748e0e5350f450009375679197b522419..fc2d94513fe25af6295cd2d847243cdf9eef9327 100644
--- a/LbRelease/doc/release.notes
+++ b/LbRelease/doc/release.notes
@@ -1,3 +1,7 @@
+2015-02-20  Marco Clemencic  <Marco.Clemencic@cern.ch>
+
+	LBCORE-751: add support for data packages checked out in a CMake-based project
+
 2015-02-20  Marco Clemencic  <Marco.Clemencic@cern.ch>
 
 	* lb-deployment-*: improvements to support Gaudi builds and added a command
diff --git a/LbRelease/python/LbRelease/GetPack.py b/LbRelease/python/LbRelease/GetPack.py
index 0f58867533e1c607188eec3849f90b4c229150e1..7dcf79325f1eb4ff51d6b84b3e358ce9e0c51b40 100644
--- a/LbRelease/python/LbRelease/GetPack.py
+++ b/LbRelease/python/LbRelease/GetPack.py
@@ -7,9 +7,11 @@ from subprocess import Popen, PIPE
 from LbUtils.Script import Script
 from LbUtils.VCS import SVNReposInfo, CVSReposInfo
 from LbConfiguration import (createProjectMakefile, createToolchainFile,
+                             createDataPackageCMakeLists,
                              eclipseConfigurationAddPackage,
                              createEclipseConfiguration)
 from LbConfiguration.Repository import repositories as __repositories__
+from LbConfiguration.Package import package_names as __data_packages__
 import rcs
 
 ## Class to select valid version tags according to LHCb policy
@@ -976,6 +978,13 @@ class GetPack(Script):
                 # Check out the package
                 done_packages[pkg] = self.checkout(pkg, vers)
                 pkgdir = done_packages[pkg][2]
+                # create special CMakeLists.txt for data packages (if needed)
+                # see LBCORE-751
+                if os.path.basename(pkg) in __data_packages__:
+                    # note that pkgdir includes the 'cmt' directory
+                    createDataPackageCMakeLists(pkg,
+                                                os.path.join(pkgdir, os.pardir,
+                                                             'CMakeLists.txt'))
                 # See if we need to check out something else
                 todo_packages.update(self._getNeededPackages(pkgdir))
                 # Progress report
@@ -986,6 +995,7 @@ class GetPack(Script):
                                                              total_count)
                 # ensure that the previous message is printed at the right moment
                 sys.stdout.flush()
+
             except Skip:
                 skipped_packages[pkg] = vers
                 self.log.warning("Skipped package %s %s", pkg, vers)