Compilation Database Generator
Tool for generating Clang's JSON Compilation Database file for GNU
make-based build systems.
It's aimed mainly at non-cmake (cmake already generates compilation database)
large codebases. Inspired by projects like YCM-Generator and Bear,
but faster (mainly with large projects), since in most cases it doesn't need a clean
build (as the mentioned tools do) to generate the compilation database file, to
achieve this it uses the make options such as -n/--dry-run and -k/--keep-going
to extract the compile commands. Also, it's more cross-compiling friendly than
YCM-generator's fake-toolchanin approach.
Installation
# pip install compiledb
- Supports Python 2.x and 3.x (for now, tested only with 2.7 and 3.6 versions)
- For bash completion support, add the content of
sh-completion/compiledb.bashfile to your.bashrcfile, for example. - ZSH completion coming soon :)
Usage
compiledb provides a make python wrapper script which, besides to execute the make
build command, updates the JSON compilation database file corresponding to that build,
resulting in a command-line interface similar to Bear.
To generate compile_commands.json file using compiledb-generator's "make wrapper" script,
executing Makefile target all:
$ compiledb make
compiledb forwards all the options/arguments passed after make subcommand to GNU Make,
so one can, for example, generate compile_commands.json using core/main.mk
as main makefile (-f flag), starting the build from build directory (-C flag):
$ compiledb make -f core/main.mk -C build
By default, compiledb make generates the compilation database and runs the actual build
command requested (acting as a make wrapper), the build step can be skipped using the -n
or --no-build options.
$ compiledb -n make
compiledb base command has been designed so that it can be used to parse compile commands
from arbitrary text files (or stdin), assuming it has a build log (ideally generated using
make -Bnwk command), and generates the corresponding JSON Compilation database.
For example, to generate the compilation database from build-log.txt file, use the following
command.
$ compiledb --parse build-log.txt
or its equivalent:
$ compiledb < build-log.txt
Or even, to pipe make's output and print the compilation database to the standard output:
$ make -Bnwk | compiledb -o-
Testing / Contributing
I've implemented this tool because I needed to index some AOSP's modules for navigating
and studying purposes (after having no satisfatory results with current tools available by the
time such as YCM-Generator and Bear). So I've reworked YCM-Generator, which resulted
in the initial version of compiledb/parser.py and used successfully to generate
compile_commands.json for some AOSP modules in ~1min running in a Docker container and then
could use it with some great tools, such as:
Notice:
- Windows: tested on Windows 10 with cmd, wsl(Ubuntu), mingw32
- Linux: tested only on Arch Linux so far
Patches are always welcome :)
License
GNU GPLv3
Metadata
Release files for compiledb 0.9.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| compiledb-0.9.5.tar.gz | 9.6 kB | Without provenance | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| compiledb-0.9.5-py3-none-any.whl | Python 3 | none | any | Details |
| compiledb-0.9.5-py2-none-any.whl | Python 2 | none | any | Details |
Total release size: 34.3 kB
Release files / compiledb-0.9.5.tar.gz
| Download URL | compiledb-0.9.5.tar.gz |
|---|---|
| Size | 9.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
98534b423366116ed6b3ff1cceabe21ea243b9ce3e2e403d7b169dd221f61fa1
|
|
BLAKE2b-256 checksum How to use checksums |
6b8702c4b65070b36da1cec479cd71620611b068fc5ea9b4acbc0a71a8278cde
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.23.3 CPython/3.6.5
|
Release files / compiledb-0.9.5-py3-none-any.whl
| Download URL | compiledb-0.9.5-py3-none-any.whl |
|---|---|
| Size | 12.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2e30a2c3fd52e599d9d63bf76941785d1aa124f3be39f6c2665f8468a2b00d8a
|
|
BLAKE2b-256 checksum How to use checksums |
e2be2bf514ce22b048cdb5a05ac6e9feb05fbaa73a2788eca143db2a09f85056
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.23.3 CPython/3.6.5
|
Release files / compiledb-0.9.5-py2-none-any.whl
| Download URL | compiledb-0.9.5-py2-none-any.whl |
|---|---|
| Size | 12.3 kB |
| Tags | Python 2 |
|
SHA-256 checksum How to use checksums |
f4897d9423f7b078e1b7701c040833d00a68cda433643eea147384af07633768
|
|
BLAKE2b-256 checksum How to use checksums |
b315f6928622784275719cef9c4c1edf4d68d96460b715a3c38b6c748657d600
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.23.3 CPython/3.6.5
|
Security for compiledb 0.9.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.