diff --git a/hdlmake b/hdlmake
index 87acdaa92422863ec32a69c1a403c148cab2746f..435cb70b2f1be0ddfac096ed22ca8f9157974435 100755
Binary files a/hdlmake and b/hdlmake differ
diff --git a/src/__main__.py b/src/__main__.py
index fd52fd668c836fd7b19bed3c165f0b783ee37753..2dc00bea3c4f16b1709f64f17aebe62a89213673 100755
--- a/src/__main__.py
+++ b/src/__main__.py
@@ -52,6 +52,9 @@ def main():
     parser.add_option("--clean", action="store_true", dest="clean",
     help="remove all modules fetched for this one")
 
+    parser.add_option("--list", action="store_true", dest="list",
+    help="List all modules togather with their files")
+
     parser.add_option("--ise-proj", action="store_true", dest="ise_proj",
     help="create/update an ise project including list of project files")
 
@@ -115,6 +118,8 @@ def main():
         kernel.generate_ise_makefile()
     elif options.make_remote == True:
         kernel.generate_remote_synthesis_makefile()
+    elif options.list == True:
+        kernel.list_modules()
     elif options.clean == True:
         kernel.clean_modules()
     else:
diff --git a/src/hdlmake_kernel.py b/src/hdlmake_kernel.py
index 0d3de2ca3fe3a2f45e068970a9a71a5229029fa9..2f471c123ccfa54727c3d3c6951dd387ed5dd66d 100644
--- a/src/hdlmake_kernel.py
+++ b/src/hdlmake_kernel.py
@@ -52,6 +52,20 @@ class HdlmakeKernel(object):
             p.rawprint("Allowed actions are:\n\tsimulation\n\tsynthesis")
             quit()
 
+    def list_modules(self):
+        import path
+        for m in self.modules_pool:
+            if m.path == os.getcwd():
+                print(".")
+            else:
+                print(path.relpath(m.path))
+            if not len(m.files):
+                print("   # no files")
+            else:
+                for f in m.files:
+                    print("   " + path.relpath(f.path, m.path))
+            print("")
+            
     def fetch(self, unfetched_only = False):
         p.rawprint("Fetching needed modules...")
         self.modules_pool.fetch_all(unfetched_only)