Merge branch 'maint-0.4.4' into maint-0.4.5

This commit is contained in:
David Goulet 2021-01-21 16:07:16 -05:00
commit e06a0e904c
4 changed files with 41 additions and 0 deletions

3
.gitignore vendored
View File

@ -40,6 +40,8 @@ uptime-*.json
# Core files # Core files
core core
core.* core.*
# ccls file that can be per directory.
*.ccls
# / # /
/Makefile /Makefile
@ -77,6 +79,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/

View File

@ -725,3 +725,17 @@ show-libs:
show-testing-libs: show-testing-libs:
@echo src/test/libtor-testing.a @echo src/test/libtor-testing.a
# 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
View 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
View 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