diff gen/main.cpp @ 1402:1311dabc6a1f

Merged xfBuild patch for dependency tree generation. See #286.
author Christian Kamm <kamm incasoftware de>
date Wed, 20 May 2009 21:13:41 +0200
parents c5a92bee639d
children e5c5d354c649
line wrap: on
line diff
--- a/gen/main.cpp	Wed May 20 16:20:59 2009 +0200
+++ b/gen/main.cpp	Wed May 20 21:13:41 2009 +0200
@@ -143,7 +143,9 @@
     global.params.libfiles = new Array();
     global.params.objfiles = new Array();
     global.params.ddocfiles = new Array();
-
+    
+    global.params.moduleDeps = NULL;
+    global.params.moduleDepsFile = NULL;
 
     // Set predefined version identifiers
     VersionCondition::addPredefinedGlobalIdent("LLVM");
@@ -222,6 +224,12 @@
         global.params.hdrdir || global.params.hdrname;
 #endif
 
+    initFromString(global.params.moduleDepsFile, moduleDepsFile);
+    if (global.params.moduleDepsFile != NULL) 
+    { 
+         global.params.moduleDeps = new OutBuffer; 
+    }
+
     processVersions(debugArgs, "debug",
         DebugCondition::setGlobalLevel,
         DebugCondition::addGlobalIdent);
@@ -830,6 +838,17 @@
     if (global.errors)
         fatal();
 
+    // write module dependencies to file if requested
+    if (global.params.moduleDepsFile != NULL) 
+    { 
+        assert (global.params.moduleDepsFile != NULL);
+
+        File deps(global.params.moduleDepsFile);
+        OutBuffer* ob = global.params.moduleDeps; 
+        deps.setbuffer((void*)ob->data, ob->offset);
+        deps.write();
+    }
+
     // collects llvm modules to be linked if singleobj is passed
     std::vector<llvm::Module*> llvmModules;