diff options
author | David Goulet <dgoulet@torproject.org> | 2021-01-21 16:06:54 -0500 |
---|---|---|
committer | David Goulet <dgoulet@torproject.org> | 2021-01-21 16:06:54 -0500 |
commit | c09f8da8a98d035082b207ebdaf1e6fe3110c8b7 (patch) | |
tree | 4b93815001614aaccf5bec483675a9b98780e844 | |
parent | 9b390a556e5030d67c235806b2c027513fb1679f (diff) | |
parent | 8500700aa45722595938ef59935e7efde2b1e9e3 (diff) | |
download | tor-c09f8da8a98d035082b207ebdaf1e6fe3110c8b7.tar.gz tor-c09f8da8a98d035082b207ebdaf1e6fe3110c8b7.zip |
Merge branch 'maint-0.3.5' into maint-0.4.3
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | Makefile.am | 14 | ||||
-rw-r--r-- | changes/ticket40227 | 4 | ||||
-rwxr-xr-x | scripts/maint/gen_ccls_file.sh | 20 |
4 files changed, 41 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore index f60d72bf1e..dea131963e 100644 --- a/.gitignore +++ b/.gitignore @@ -39,6 +39,8 @@ uptime-*.json # Core files core core.* +# ccls file that can be per directory. +*.ccls # / /Makefile @@ -76,6 +78,7 @@ core.* /Tor*Bundle.dmg /tor-*-win32.exe /warning_flags +/compile_commands.json /coverage_html/ /callgraph/ diff --git a/Makefile.am b/Makefile.am index 1041494da7..117c6a5a70 100644 --- a/Makefile.am +++ b/Makefile.am @@ -577,3 +577,17 @@ show-libs: show-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 diff --git a/changes/ticket40227 b/changes/ticket40227 new file mode 100644 index 0000000000..e5efad0f95 --- /dev/null +++ b/changes/ticket40227 @@ -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. diff --git a/scripts/maint/gen_ccls_file.sh b/scripts/maint/gen_ccls_file.sh new file mode 100755 index 0000000000..899e4e9603 --- /dev/null +++ b/scripts/maint/gen_ccls_file.sh @@ -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 |