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