mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-12 22:23:49 +01:00
build: Add "make lsp" command
Generates the compile_commands.json file using the "bear" application so the ccls server can be more efficient with our code base. Closes #40227 Signed-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
parent
faf7b550e7
commit
8500700aa4
3
.gitignore
vendored
3
.gitignore
vendored
@ -39,6 +39,8 @@ uptime-*.json
|
|||||||
# Core files
|
# Core files
|
||||||
core
|
core
|
||||||
core.*
|
core.*
|
||||||
|
# ccls file that can be per directory.
|
||||||
|
*.ccls
|
||||||
|
|
||||||
# /
|
# /
|
||||||
/Makefile
|
/Makefile
|
||||||
@ -76,6 +78,7 @@ core.*
|
|||||||
/Tor*Bundle.dmg
|
/Tor*Bundle.dmg
|
||||||
/tor-*-win32.exe
|
/tor-*-win32.exe
|
||||||
/warning_flags
|
/warning_flags
|
||||||
|
/compile_commands.json
|
||||||
|
|
||||||
/coverage_html/
|
/coverage_html/
|
||||||
/callgraph/
|
/callgraph/
|
||||||
|
14
Makefile.am
14
Makefile.am
@ -470,3 +470,17 @@ show-libs:
|
|||||||
|
|
||||||
show-testing-libs:
|
show-testing-libs:
|
||||||
@echo $(TOR_INTERNAL_TESTING_LIBS)
|
@echo $(TOR_INTERNAL_TESTING_LIBS)
|
||||||
|
|
||||||
|
# Note here that we hardcode this -j2 because if the user would pass too many
|
||||||
|
# cores, bear actually chockes and dies :S. For this to work, a make clean
|
||||||
|
# needs to be done else bear will miss some compile flags.
|
||||||
|
lsp:
|
||||||
|
@if test -x "`which bear 2>&1;true`"; then \
|
||||||
|
echo "Generating LSP compile_commands.json. Might take few minutes..."; \
|
||||||
|
$(MAKE) clean 2>&1 >/dev/null; \
|
||||||
|
bear >/dev/null 2>&1 -- $(MAKE) -j2 2>&1 >/dev/null; \
|
||||||
|
echo "Generating .ccls file..."; \
|
||||||
|
./scripts/maint/gen_ccls_file.sh \
|
||||||
|
else \
|
||||||
|
echo "No bear command found. On debian, apt install bear"; \
|
||||||
|
fi
|
||||||
|
4
changes/ticket40227
Normal file
4
changes/ticket40227
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
o Minor feature (build system):
|
||||||
|
- New "make lsp" command to auto generate the compile_commands.json file
|
||||||
|
used by the ccls server. The "bear" program is needed for this. Closes
|
||||||
|
ticket 40227.
|
20
scripts/maint/gen_ccls_file.sh
Executable file
20
scripts/maint/gen_ccls_file.sh
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# THIS MUST BE CALLED FROM THE ROOT DIRECTORY. IT IS USED BY THE MAKEFILE SO #
|
||||||
|
# IN THEORY, YOU SHOULD NEVER CALL THIS. #
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
CCLS_FILE=".ccls"
|
||||||
|
|
||||||
|
# Get all #define *_PRIVATE from our source. We need to list them in our .ccls
|
||||||
|
# file and enable them otherwise ccls will not find their definition thinking
|
||||||
|
# that they are dead code.
|
||||||
|
PRIVATE_DEFS=$(grep -r --include \*.h "_PRIVATE" | grep "#ifdef" | cut -d' ' -f2 | sort | uniq)
|
||||||
|
|
||||||
|
echo "clang" > "$CCLS_FILE"
|
||||||
|
for p in $PRIVATE_DEFS; do
|
||||||
|
echo "-D$p" >> "$CCLS_FILE"
|
||||||
|
done
|
Loading…
Reference in New Issue
Block a user