From da5cacc96537f744b3dc37cd0bbeb822295d164e Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Wed, 27 Feb 2019 10:21:27 -0500 Subject: [PATCH] TT#50652 add YCM config for include/ Change-Id: I7c1cb9cd4d8ef97166c8aa1ba470e5fef5f59863 --- daemon/.ycm_extra_conf.py | 1 + include/.ycm_extra_conf.py | 113 +++++++++++++++++++++++++++++++++++++ lib/.ycm_extra_conf.py | 1 + 3 files changed, 115 insertions(+) create mode 100644 include/.ycm_extra_conf.py diff --git a/daemon/.ycm_extra_conf.py b/daemon/.ycm_extra_conf.py index a08844f94..cf12a6910 100644 --- a/daemon/.ycm_extra_conf.py +++ b/daemon/.ycm_extra_conf.py @@ -32,6 +32,7 @@ flags = [ '-I../kernel-module/', '-I../lib/', '-I../include/', + '-I../daemon/', '-D_GNU_SOURCE', '-D__DEBUG=1', '-D__YCM=1', diff --git a/include/.ycm_extra_conf.py b/include/.ycm_extra_conf.py new file mode 100644 index 000000000..04612a9b0 --- /dev/null +++ b/include/.ycm_extra_conf.py @@ -0,0 +1,113 @@ +import os +import ycm_core +from clang_helpers import PrepareClangFlags + +# Set this to the absolute path to the folder (NOT the file!) containing the +# compile_commands.json file to use that instead of 'flags'. See here for +# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html +# Most projects will NOT need to set this to anything; you can just change the +# 'flags' list of compilation flags. Notice that YCM itself uses that approach. +compilation_database_folder = '' + +# These are the compilation flags that will be used in case there's no +# compilation database set. +flags = [ + '-g', + '-Wall', + '-pthread', + '-fno-strict-aliasing', + '-I/usr/include/glib-2.0', + '-I/usr/lib/x86_64-linux-gnu/glib-2.0/include', + '-I/usr/include/json-glib-1.0', + '-pthread', + '-I../kernel-module/', + '-I../lib/', + '-I../include/', + '-I../daemon/', + '-D_GNU_SOURCE', + '-D__DEBUG=1', + '-D__YCM=1', + '-DRTPENGINE_VERSION="dummy"', + '-DRE_PLUGIN_DIR="/usr/lib/rtpengine"', + '-DWITH_IPTABLES_OPTION', + '-DWITH_TRANSCODING', + '-DHAVE_BCG729', + '-O2', + '-fstack-protector', + '--param=ssp-buffer-size=4', + '-Wformat', + '-Werror=format-security', + '-D_FORTIFY_SOURCE=2', + # THIS IS IMPORTANT! Without a "-std=" flag, clang won't + # know which language to use when compiling headers. So it will guess. + # Badly. So C++ headers will be compiled as C headers. + # You don't want that so ALWAYS specify + # a "-std=". + # For a C project, you would set this to something like 'c99' instead of + # 'c++11'. + '-std=c99', + # ...and the same thing goes for the magic -x option which specifies the + # language that the files to be compiled are written in. This is mostly + # relevant for c++ headers. + # For a C project, you would set this to 'c' instead of 'c++'. + '-x', + 'c', +] + +if compilation_database_folder: + database = ycm_core.CompilationDatabase(compilation_database_folder) +else: + database = None + + +def DirectoryOfThisScript(): + return os.path.dirname(os.path.abspath(__file__)) + + +def MakeRelativePathsInFlagsAbsolute(flags, working_directory): + if not working_directory: + return 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 FlagsForFile(filename): + if database: + # Bear in mind that compilation_info.compiler_flags_ does NOT return a + # python list, but a "list-like" StringVec object + compilation_info = database.GetCompilationInfoForFile(filename) + final_flags = PrepareClangFlags( + MakeRelativePathsInFlagsAbsolute( + compilation_info.compiler_flags_, + compilation_info.compiler_working_dir_), + filename) + else: + relative_to = DirectoryOfThisScript() + final_flags = MakeRelativePathsInFlagsAbsolute(flags, relative_to) + + return { + 'flags': final_flags, + 'do_cache': True + } diff --git a/lib/.ycm_extra_conf.py b/lib/.ycm_extra_conf.py index 566f433a9..ec9a19293 100644 --- a/lib/.ycm_extra_conf.py +++ b/lib/.ycm_extra_conf.py @@ -24,6 +24,7 @@ flags = [ '-D__YCM=1', '-I../daemon', '-I../include', + '-I../lib', '-I/home/dfx/src/bcg729/include', '-DRTPENGINE_VERSION="dummy"', '-DRE_PLUGIN_DIR="/usr/lib/rtpengine"',