3 from clang_helpers import PrepareClangFlags
5 compilation_database_folder = ''
11 '/usr/include/dbus-1.0',
18 '-Wno-variadic-macros',
21 '-DUSE_CLANG_COMPLETER',
26 if compilation_database_folder:
27 database = ycm_core.CompilationDatabase(compilation_database_folder)
32 def DirectoryOfThisScript():
33 return os.path.dirname(os.path.abspath(__file__))
36 def MakeRelativePathsInFlagsAbsolute(flags, working_directory):
37 if not working_directory:
40 make_next_absolute = False
41 path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ]
45 if make_next_absolute:
46 make_next_absolute = False
47 if not flag.startswith('/'):
48 new_flag = os.path.join(working_directory, flag)
50 for path_flag in path_flags:
52 make_next_absolute = True
55 if flag.startswith(path_flag):
56 path = flag[ len(path_flag): ]
57 new_flag = path_flag + os.path.join(working_directory, path)
61 new_flags.append(new_flag)
65 def FlagsForFile(filename):
67 compilation_info = database.GetCompilationInfoForFile(filename)
68 final_flags = PrepareClangFlags(
69 MakeRelativePathsInFlagsAbsolute(
70 compilation_info.compiler_flags_,
71 compilation_info.compiler_working_dir_),
75 relative_to = DirectoryOfThisScript()
76 final_flags = MakeRelativePathsInFlagsAbsolute(flags, relative_to)