-def make_relative_paths_in_flags_absolute(flags, working_directory):
- if not working_directory:
- return list(flags)
- new_flags = []
- make_next_absolute = False
- path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ]
- for flag in flags:
- new_flag = flag
- if make_next_absolute:
- make_next_absolute = False
- if not flag.startswith('/'):
- new_flag = os.path.join(working_directory, flag)
- for path_flag in path_flags:
- if flag == path_flag:
- make_next_absolute = True
- break
- if flag.startswith(path_flag):
- path = flag[ len(path_flag): ]
- new_flag = path_flag + os.path.join(working_directory, path)
- break
- if new_flag:
- new_flags.append(new_flag)
- return new_flags
-
-def flags_for_clang_complete(root):
- try:
- clang_complete_path = find_nearest(root, '.clang_complete')
- clang_complete_flags = open(clang_complete_path, 'r').read().splitlines()
- return clang_complete_flags
- except Exception, err:
- logging.info("Error while looking flags for .clang_complete in root: " + root)
- logging.error(err)
- return None