utils/llvm-build: Ensure output directory exists for tools which write various fragments.
authorDaniel Dunbar <daniel@zuster.org>
Sat, 5 Nov 2011 04:07:49 +0000 (04:07 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Sat, 5 Nov 2011 04:07:49 +0000 (04:07 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143782 91177308-0d34-0410-b5e6-96231b3b80d8

utils/llvm-build/llvmbuild/main.py

index 5932fb98d6ff6d9d545a72060545b55026771422..f6355261ceb1783c4f97c65b592d5e9456d45320 100644 (file)
@@ -31,6 +31,17 @@ def mk_quote_string_for_target(value):
     # The only quoting we currently perform is for ':', to support msys users.
     return value.replace(":", "\\:")
 
+def make_install_dir(path):
+    """
+    make_install_dir(path) -> None
+
+    Create the given directory path for installation, including any parents.
+    """
+
+    # os.makedirs considers it an error to be called with an existant path.
+    if not os.path.exists(path):
+        os.makedirs(path)
+
 ###
 
 class LLVMProjectInfo(object):
@@ -276,6 +287,7 @@ class LLVMProjectInfo(object):
                                      for _,_,deps in entries) + 1
 
         # Write out the library table.
+        make_install_dir(os.path.dirname(output_path))
         f = open(output_path, 'w')
         print >>f, """\
 //===- llvm-build generated file --------------------------------*- C++ -*-===//
@@ -360,6 +372,7 @@ class LLVMProjectInfo(object):
         dependencies = list(self.get_fragment_dependencies())
 
         # Write out the CMake fragment.
+        make_install_dir(os.path.dirname(output_path))
         f = open(output_path, 'w')
 
         # Write the header.
@@ -419,6 +432,7 @@ configure_file(\"%s\"
         dependencies = list(self.get_fragment_dependencies())
 
         # Write out the Makefile fragment.
+        make_install_dir(os.path.dirname(output_path))
         f = open(output_path, 'w')
 
         # Write the header.