diff --git a/src/SourceCompile/Compiler.cpp b/src/SourceCompile/Compiler.cpp
index f965a4c..9a5d4de 100644
--- a/src/SourceCompile/Compiler.cpp
+++ b/src/SourceCompile/Compiler.cpp
@@ -47,6 +47,8 @@
 #include <mutex>
 #include <thread>
 #include <vector>
+#include <iostream>
+#include <fstream>
 using namespace SURELOG;
 
 Compiler::Compiler(CommandLineParser* commandLineParser, ErrorContainer* errors,
@@ -229,12 +231,38 @@
   return true;
 }
 
+bool Compiler::createFileList_()
+{
+  if (m_commandLineParser->writePpOutput() ||
+          (m_commandLineParser->writePpOutputFileId() != 0)) {
+    SymbolTable* symbolTable = getSymbolTable();
+    const std::string& directory =
+            symbolTable->getSymbol(m_commandLineParser->getFullCompileDir());
+    std::ofstream ofs;
+    std::string fileList = directory + "/file.lst";
+    ofs.open(fileList);
+    if (ofs.good()) {
+      unsigned int size = m_compilers.size();
+      for (unsigned int i = 0; i < size; i++) {
+        std::string fileName = m_compilers[i]->getSymbolTable()->getSymbol(
+                m_compilers[i]->getPpOutputFileId());
+        fileName = StringUtils::replaceAll(fileName, "//", "/");
+        ofs << fileName << std::flush << std::endl;
+      }
+      ofs.close();
+    } else {
+      std::cout << "Could not create filelist: " << fileList << std::endl;
+    }
+  }
+}
+ 
+
 bool Compiler::parseinit_() {
   Precompiled* prec = Precompiled::getSingleton();
   // Single out the large files.
   // Small files are going to be scheduled in multiple threads based on size.
   // Large files are going to be compiled in a different batch in multithread
-
+  
   if (!m_commandLineParser->fileunit()) {
     unsigned int size = m_symbolTables.size();
     for (unsigned int i = 0; i < size; i++) {
@@ -564,7 +592,7 @@
     profile += msg;
     tmr.reset();
   }
-
+  createFileList_();
   // Parse
   bool parserInitialized = false;
   if (m_commandLineParser->parse() || m_commandLineParser->pythonListener() ||
diff --git a/src/SourceCompile/Compiler.h b/src/SourceCompile/Compiler.h
index 80c182b..3e3cbd8 100644
--- a/src/SourceCompile/Compiler.h
+++ b/src/SourceCompile/Compiler.h
@@ -74,6 +74,7 @@
   bool parseLibrariesDef_();
 
   bool ppinit_();
+  bool createFileList_();
   bool parseinit_();
   bool pythoninit_();
   bool compileFileSet_(CompileSourceFile::Action action, bool allowMultithread,
