Messages in this thread | | | Date | Wed, 10 Feb 2021 11:24:00 -0700 | From | Nathan Chancellor <> | Subject | Re: [PATCH v1] clang_tools:gen_compile_commands: Change the default source directory |
| |
On Wed, Feb 10, 2021 at 08:15:27PM +0800, Stephen Zhang wrote: > Nathan Chancellor <nathan@kernel.org> 于2021年2月10日周三 上午3:27写道: > > > Just as an FYI, your email was HTML, which means it won't hit LKML. > > > Thanks for pointing that out. The existence of a GFW makes it difficult for > me to connect > to the mail server. so I use git client to send patches only and reply to > emails with > gmail web client.
You can configure your Gmail web client to send text responses by default by clicking on the three dot menu in the compose window then chose the "plain text mode" option.
> $ mkdir -p /tmp/build/perf > > > > $ make -C tools/perf -skj"$(nproc)" O=/tmp/build/perf > > > > $ cd /tmp/build/perf > > > > $ ~/cbl/src/linux/scripts/clang-tools/gen_compile_commands.py --log_level > > INFO -d . > > ... > > > > According to the code logic, the source directory is specified by > parameters “-d”.
Yes and no. '-d' is supposed to be the build directory but the logic of the script clearly does not work when the build and source directories are in completely separate tree paths. In other works:
$ make
and
$ make O=build
will work with '-d .' because the .cmd files are in '.' and the source files will be placed relative to '.', which is correct. Your command does not work for two reasons:
1. You are using a build directory that is not a subpath of the source directory. In other words, this script would not work for
$ make O=/tmp/build
because '-d /tmp/build' needs to be used to find the .cmd files but then the relative path of the source files is messed up, as you point out.
2. The source files are in tools/perf, not .
> def process_line(root_directory, command_prefix, file_path): > ... > abs_path = os.path.abspath(os.path.join(root_directory, file_path)) > ... > > The "root_directory" is passed by "-d", which finally become the prefix > like "/tmp/build/perf/" > of "File /tmp/build/perf/arch/x86/tests/bp-modify.c not found".so the > command is: > > $ ~/cbl/src/linux/scripts/clang-tools/gen_compile_commands.py --log_level > INFO -d ~/cbl/src/linux/tools/perf/ > > Maybe we should make an updated version, in which the help message of "-d" > can be changed > to specify the source directory instead, or I am just misunderstanding the > code logic. >
The build directory needs to be involved because that is where the .cmd files will be but the source directory needs to be known because the source files in the .cmd files are relative to the source directory, not the build directory. This happens to work in most situations like I point out above but not always.
I think that my patch is most likely the way to go unless others feel differently. It would be nice if you could give it a go.
Cheers, Nathan
| |