.ycm_extra_conf.py
author Mike Hommey <mh+mozilla@glandium.org>
Fri, 08 Apr 2016 09:03:25 +0900
changeset 330813 862f44c0c10c2828616af4856871c1772dfc4975
parent 272863 3e46e2f117699b4897528d471b5d4a96299adbe8
child 343781 dd8ef51f4920c5f4370afd0aebf43d1113363fc3
permissions -rw-r--r--
Bug 1264129 - Use sed to update configure from configure.in, instead of autoconf. r=gps The configure.in is a small wrapper around python configure, that is still a m4 script so that people running autoconf manually can still do so without breaking their stuff (and we have jobs that do that on automation as well). But considering how simple the m4 is, to avoid having the autoconf checking code twice (once in client.mk and once in build/moz.configure/old.configure), we can just process it with sed instead of autoconf.

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