Commit 75a861f2 authored by Sidney San Martín's avatar Sidney San Martín Committed by Commit Bot

[Vim/YCM] Fix missing system headers when YCM was built with its own libclang.

Bug: 932667
Change-Id: I2eb9965da1eb3f9ad4a5ce103cf6e32d35019e48
Reviewed-on: https://chromium-review.googlesource.com/c/1476105
Auto-Submit: Sidney San Martín <sdy@chromium.org>
Commit-Queue: Sidney San Martín <sdy@chromium.org>
Commit-Queue: Asanka Herath <asanka@chromium.org>
Reviewed-by: default avatarAsanka Herath <asanka@chromium.org>
Cr-Commit-Position: refs/heads/master@{#632846}
parent 603940cd
......@@ -296,6 +296,13 @@ def GetClangOptionsFromNinjaForFilename(chrome_root, filename):
# Chromium's includes are relative to that.
additional_flags = ['-I' + os.path.join(chrome_root)]
# Fix missing system headers. For details, see
# <https://github.com/Valloric/YouCompleteMe/issues/303>
clang_root = os.path.join(
chrome_root, 'third_party/llvm-build/Release+Asserts')
additional_flags += ['-isystem', os.path.join(clang_root, 'include')]
additional_flags += ['-isystem', os.path.join(clang_root, 'include/c++/v1')]
# Version of Clang used to compile Chromium can be newer then version of
# libclang that YCM uses for completion. So it's possible that YCM's libclang
# doesn't know about some used warning options, which causes compilation
......
......@@ -20,6 +20,12 @@ import sys
import tempfile
import unittest
_common_flags = [
'-I[SRC]',
'-isystem', '[SRC]/third_party/llvm-build/Release+Asserts/include',
'-isystem', '[SRC]/third_party/llvm-build/Release+Asserts/include/c++/v1',
'-Wno-unknown-warning-option'
]
def CreateFile(path, copy_from=None, format_with=None, make_executable=False):
"""Creates a file.
......@@ -163,9 +169,8 @@ class Chromium_ycmExtraConfTest(unittest.TestCase):
self.ycm_extra_conf.GetClangOptionsFromNinjaForFilename(
self.chrome_root, os.path.join(self.chrome_root, 'one.cpp'))
self.assertEquals(
self.NormalizeStringsInList(clang_options), [
'-I[SRC]', '-Wno-unknown-warning-option', '-I[OUT]/a',
'-I[OUT]/tag-one'
self.NormalizeStringsInList(clang_options), _common_flags + [
'-I[OUT]/a', '-I[OUT]/tag-one'
])
def testOutDirNames(self):
......@@ -190,8 +195,9 @@ class Chromium_ycmExtraConfTest(unittest.TestCase):
self.assertTrue('flags' in result)
self.assertEquals(
self.NormalizeStringsInList(result['flags']), [
'-DUSE_CLANG_COMPLETER', '-std=c++14', '-x', 'c++', '-I[SRC]',
'-Wno-unknown-warning-option', '-I[OUT]/a', '-I[OUT]/tag-one'
'-DUSE_CLANG_COMPLETER', '-std=c++14', '-x', 'c++'
] + _common_flags + [
'-I[OUT]/a', '-I[OUT]/tag-one'
])
def testGetFlagsForFileForUnknownCppFile(self):
......@@ -203,8 +209,9 @@ class Chromium_ycmExtraConfTest(unittest.TestCase):
self.assertTrue('flags' in result)
self.assertEquals(
self.NormalizeStringsInList(result['flags']), [
'-DUSE_CLANG_COMPLETER', '-std=c++14', '-x', 'c++', '-I[SRC]',
'-Wno-unknown-warning-option', '-I[OUT]/a', '-I[OUT]/tag-default'
'-DUSE_CLANG_COMPLETER', '-std=c++14', '-x', 'c++'
] + _common_flags + [
'-I[OUT]/a', '-I[OUT]/tag-default'
])
def testGetFlagsForFileForUnknownCppNotTestFile(self):
......@@ -216,8 +223,9 @@ class Chromium_ycmExtraConfTest(unittest.TestCase):
self.assertTrue('flags' in result)
self.assertEquals(
self.NormalizeStringsInList(result['flags']), [
'-DUSE_CLANG_COMPLETER', '-std=c++14', '-x', 'c++', '-I[SRC]',
'-Wno-unknown-warning-option', '-I[OUT]/a', '-I[OUT]/tag-default'
'-DUSE_CLANG_COMPLETER', '-std=c++14', '-x', 'c++'
] + _common_flags + [
'-I[OUT]/a', '-I[OUT]/tag-default'
])
testGetFlagsForFileForKnownObjcFile = TestLanguage('eight.m', 'objective-c')
......@@ -241,8 +249,9 @@ class Chromium_ycmExtraConfTest(unittest.TestCase):
self.assertTrue('flags' in result)
self.assertEquals(
self.NormalizeStringsInList(result['flags']), [
'-DUSE_CLANG_COMPLETER', '-std=c++14', '-x', 'c++', '-I[SRC]',
'-Wno-unknown-warning-option', '-I[OUT]/a', '-I[OUT]/tag-default'
'-DUSE_CLANG_COMPLETER', '-std=c++14', '-x', 'c++'
] + _common_flags + [
'-I[OUT]/a', '-I[OUT]/tag-default'
])
def testGetFlagsForFileForUnknownUnittestFile(self):
......@@ -254,9 +263,9 @@ class Chromium_ycmExtraConfTest(unittest.TestCase):
self.assertTrue('flags' in result)
self.assertEquals(
self.NormalizeStringsInList(result['flags']), [
'-DUSE_CLANG_COMPLETER', '-std=c++14', '-x', 'c++', '-I[SRC]',
'-Wno-unknown-warning-option', '-I[OUT]/a',
'-I[OUT]/tag-default-test'
'-DUSE_CLANG_COMPLETER', '-std=c++14', '-x', 'c++'
] + _common_flags + [
'-I[OUT]/a', '-I[OUT]/tag-default-test'
])
def testGetFlagsForFileForUnknownBrowsertestFile2(self):
......@@ -268,9 +277,9 @@ class Chromium_ycmExtraConfTest(unittest.TestCase):
self.assertTrue('flags' in result)
self.assertEquals(
self.NormalizeStringsInList(result['flags']), [
'-DUSE_CLANG_COMPLETER', '-std=c++14', '-x', 'c++', '-I[SRC]',
'-Wno-unknown-warning-option', '-I[OUT]/a',
'-I[OUT]/tag-default-test'
'-DUSE_CLANG_COMPLETER', '-std=c++14', '-x', 'c++'
] + _common_flags + [
'-I[OUT]/a', '-I[OUT]/tag-default-test'
])
def testGetFlagsForFileForKnownHeaderFileWithAssociatedCppFile(self):
......@@ -282,8 +291,9 @@ class Chromium_ycmExtraConfTest(unittest.TestCase):
self.assertTrue('flags' in result)
self.assertEquals(
self.NormalizeStringsInList(result['flags']), [
'-DUSE_CLANG_COMPLETER', '-std=c++14', '-x', 'c++', '-I[SRC]',
'-Wno-unknown-warning-option', '-I[OUT]/a', '-I[OUT]/tag-three'
'-DUSE_CLANG_COMPLETER', '-std=c++14', '-x', 'c++'
] + _common_flags + [
'-I[OUT]/a', '-I[OUT]/tag-three'
])
def testSourceFileWithNonClangOutputs(self):
......@@ -309,8 +319,9 @@ class Chromium_ycmExtraConfTest(unittest.TestCase):
self.assertTrue('flags' in result)
self.assertEquals(
self.NormalizeStringsInList(result['flags']), [
'-DUSE_CLANG_COMPLETER', '-std=c++14', '-x', 'c++', '-I[SRC]',
'-Wno-unknown-warning-option', '-I[OUT]/a', '-I[OUT]/tag-four'
'-DUSE_CLANG_COMPLETER', '-std=c++14', '-x', 'c++'
] + _common_flags + [
'-I[OUT]/a', '-I[OUT]/tag-four'
])
def testSourceFileWithOnlyNonClangOutputs(self):
......@@ -322,8 +333,9 @@ class Chromium_ycmExtraConfTest(unittest.TestCase):
self.assertTrue('flags' in result)
self.assertEquals(
self.NormalizeStringsInList(result['flags']), [
'-DUSE_CLANG_COMPLETER', '-std=c++14', '-x', 'c++', '-I[SRC]',
'-Wno-unknown-warning-option', '-I[OUT]/a', '-I[OUT]/tag-default'
'-DUSE_CLANG_COMPLETER', '-std=c++14', '-x', 'c++'
] + _common_flags + [
'-I[OUT]/a', '-I[OUT]/tag-default'
])
def testGetFlagsForSysrootAbsPath(self):
......@@ -339,8 +351,7 @@ class Chromium_ycmExtraConfTest(unittest.TestCase):
'-std=c++14',
'-x',
'c++',
'-I[SRC]',
'-Wno-unknown-warning-option',
] + _common_flags + [
'-I[OUT]/a',
'--sysroot=/usr/lib/sysroot-image',
'-isysroot',
......@@ -360,8 +371,7 @@ class Chromium_ycmExtraConfTest(unittest.TestCase):
'-std=c++14',
'-x',
'c++',
'-I[SRC]',
'-Wno-unknown-warning-option',
] + _common_flags + [
'-I[OUT]/a',
'--sysroot=[SRC]/build/sysroot-image',
'-isysroot',
......@@ -379,8 +389,7 @@ class Chromium_ycmExtraConfTest(unittest.TestCase):
'-std=c++14',
'-x',
'c++',
'-I[SRC]',
'-Wno-unknown-warning-option',
] + _common_flags + [
'-I[OUT]/b',
'-isystem[OUT]/a',
'-isystem', '[SRC]/build/c',
......@@ -398,8 +407,7 @@ class Chromium_ycmExtraConfTest(unittest.TestCase):
'-std=c++14',
'-x',
'c++',
'-I[SRC]',
'-Wno-unknown-warning-option',
] + _common_flags + [
'-I', '[OUT]/a',
'-I', '[OUT]/tag-eleven'
])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment