.ycm_extra_conf.py
author Wes Kocher <wkocher@mozilla.com>
Mon, 04 Apr 2016 15:41:17 -0700
changeset 315344 2e4a8e49b5421ca53853e2a614c4ce569d47d908
parent 261931 3e46e2f117699b4897528d471b5d4a96299adbe8
child 328815 dd8ef51f4920c5f4370afd0aebf43d1113363fc3
permissions -rw-r--r--
Backed out 5 changesets (bug 911216) for apparently tripling the runtime of SM(p) jobs along with introducing a failure in SM(p) Backed out changeset d70235224525 (bug 911216) Backed out changeset 2f503e373e6f (bug 911216) Backed out changeset 2e98f8b36bc6 (bug 911216) Backed out changeset bd5acdf4a2a1 (bug 911216) Backed out changeset 58716e562690 (bug 911216) MozReview-Commit-ID: 807ajHOZvQn

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

import imp
import os
from StringIO import StringIO
import shlex
import sys

old_bytecode = sys.dont_write_bytecode
sys.dont_write_bytecode = True

path = os.path.join(os.path.dirname(__file__), 'mach')

if not os.path.exists(path):
    path = os.path.join(os.path.dirname(__file__), 'config.status')
    config = imp.load_module('_buildconfig', open(path), path, ('', 'r', imp.PY_SOURCE))
    path = os.path.join(config.topsrcdir, 'mach')
mach_module = imp.load_module('_mach', open(path), path, ('', 'r', imp.PY_SOURCE))

sys.dont_write_bytecode = old_bytecode

def FlagsForFile(filename):
    mach = mach_module.get_mach()
    out = StringIO()
    out.encoding = None
    mach.run(['compileflags', filename], stdout=out, stderr=out)

    flag_list = shlex.split(out.getvalue())

    # This flag is added by Fennec for android build and causes ycmd to fail to parse the file.
    # Removing this flag is a workaround until ycmd starts to handle this flag properly.
    # https://github.com/Valloric/YouCompleteMe/issues/1490
    final_flags = [x for x in flag_list if not x.startswith('-march=armv')]

    return {
        'flags': final_flags,
        'do_cache': True
    }