Home | History | Annotate | Download | only in clang
      1 #!/usr/bin/env python
      2 # Copyright 2016 The Chromium Authors. All rights reserved.
      3 # Use of this source code is governed by a BSD-style license that can be
      4 # found in the LICENSE file.
      5 
      6 import json
      7 import os
      8 import subprocess
      9 
     10 
     11 def GenerateWithNinja(path):
     12   """Generates a compile database using ninja.
     13 
     14   Args:
     15     path: The build directory to generate a compile database for.
     16   """
     17   # TODO(dcheng): Incorporate Windows-specific compile DB munging from
     18   # https://codereview.chromium.org/718873004
     19   print 'Generating compile database in %s...' % path
     20   args = ['ninja', '-C', path, '-t', 'compdb', 'cc', 'cxx', 'objc', 'objcxx']
     21   output = subprocess.check_output(args)
     22   with file(os.path.join(path, 'compile_commands.json'), 'w') as f:
     23     f.write(output)
     24 
     25 
     26 def Read(path):
     27   """Reads a compile database into memory.
     28 
     29   Args:
     30     path: Directory that contains the compile database.
     31   """
     32   with open(os.path.join(path, 'compile_commands.json'), 'rb') as db:
     33     return json.load(db)
     34