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
)