.ycm_extra_conf.py
author Phil Ringnalda <philringnalda@gmail.com>
Fri, 01 Sep 2017 22:28:49 -0700
changeset 378436 3e55e4de032f16f2e6cda431c602d600f2d87f75
parent 308838 578ebd592745ff2b7647b205576f20b5b36f3327
child 455113 2a22490b8a06c9a5eef192ef3192386f8e7ff74f
permissions -rw-r--r--
Backed out 14 changesets (bug 1322746) for unexpected passes on Win8 Backed out changeset a10fcb139377 (bug 1322746) Backed out changeset 992b2173bda7 (bug 1322746) Backed out changeset 88a28c4ebc6b (bug 1322746) Backed out changeset c5bd6bbf5653 (bug 1322746) Backed out changeset 882cd05b7064 (bug 1322746) Backed out changeset 87e7f25a089c (bug 1322746) Backed out changeset 2ed5b75a6f5e (bug 1322746) Backed out changeset 6d1dd5775850 (bug 1322746) Backed out changeset b97bb7a2e555 (bug 1322746) Backed out changeset ab8352ffd2ca (bug 1322746) Backed out changeset a4901ec3c327 (bug 1322746) Backed out changeset 61c7478af98c (bug 1322746) Backed out changeset b202e9377e24 (bug 1322746) Backed out changeset cf739e7c76b8 (bug 1322746) MozReview-Commit-ID: CesCbY4ABvS

# 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
    }