.ycm_extra_conf.py
author Tiberius Oros <toros@mozilla.com>
Tue, 25 Sep 2018 23:12:03 +0300
changeset 493982 a95c13dd55c5ca335f3a5e5512e1af0bdc2f6f9e
parent 350123 578ebd592745ff2b7647b205576f20b5b36f3327
child 512260 2a22490b8a06c9a5eef192ef3192386f8e7ff74f
permissions -rw-r--r--
Backed out 11 changesets (bug 1493563) for failures on browser_blockingCookies.js on a CLOSED TREE Backed out changeset d755b96837ac (bug 1493563) Backed out changeset 651f87dca51f (bug 1493563) Backed out changeset 68de8f0866d0 (bug 1493563) Backed out changeset 205d69890f50 (bug 1493563) Backed out changeset 5f922cd6c21e (bug 1493563) Backed out changeset 84dc54c1a9c1 (bug 1493563) Backed out changeset 287666ecdd17 (bug 1493563) Backed out changeset c64a2ea15b7b (bug 1493563) Backed out changeset 9085269938cd (bug 1493563) Backed out changeset de06604fefcb (bug 1493563) Backed out changeset f9bac5e73bd4 (bug 1493563)

# 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
import shlex
import sys
try:
    from StringIO import StringIO
except ImportError:
    from io import StringIO

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()

    # Mach calls sys.stdout.fileno(), so we need to fake it when capturing it.
    # Returning an invalid file descriptor does the trick.
    out.fileno = lambda: -1
    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
    }