Skip to main content

Build Status PyPI version

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 it's supposed to be faster (mainly with large projects), since it doesn't need a clean build (as the current available tools do) to generate the compilation database file, to achieve this it uses the make options such as -Bnk 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.bash file to your .bashrc file, 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 command, 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 command, 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

Even though, 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

Also, compiledb base command can be used to parse compile commands from an arbitrary text file (or stdin), assuming it has a build log (ideally generated using make -Bnwk command), and generates the 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 even, to pipe make's output and print the compilation database to the standard output:

$ make -Bnwk | compiledb -o-

Testing / Contributing

I've implemented it basically because I needed to index some AOSP's modules for navigating and studying purposes (after having no satisfatory results with current tools such as YCM-Generator and Bear). So I've reworked YCM-Generator, which resulted in compiledb-gen-parser and used successfully to generate compilation database for some AOSP modules in ~1min running in a Docker container and then I've been able to use some great tools such as:

Notice:

  • Windows not supported yet (at least not tested yet in Cygwin/MinGW)
  • Tested only on Linux (Arch Linux) so far

Patches are always welcome :)

License

GNU GPLv3

Metadata

Release files for compiledb 0.9.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for compiledb 0.9.2
File Size Uploaded Provenance Actions
compiledb-0.9.2.tar.gz 8.9 kB Without provenance Details for compiledb-0.9.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for compiledb 0.9.2
File Interpreter ABI Platform Actions
compiledb-0.9.2-py3-none-any.whl Python 3 none any Details for compiledb-0.9.2-py3-none-any.whl

Total release size: 20.5 kB

Release files / compiledb-0.9.2.tar.gz

Download URL compiledb-0.9.2.tar.gz
Size 8.9 kB
Tags Source
SHA-256 checksum
How to use checksums
74df430f841a83054faa20c41caa33d09a4591e012fe194407e559ad86d8c4e2
BLAKE2b-256 checksum
How to use checksums
e650824e5256e7d32fc236d534aff93a6d8f9121fe427b5da296c510000289f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / compiledb-0.9.2-py3-none-any.whl

Download URL compiledb-0.9.2-py3-none-any.whl
Size 11.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
89a8f271ed6efe02373a90903f0106c2614c07df264f1d576b7c7ff015258aad
BLAKE2b-256 checksum
How to use checksums
f2c9093ebdee0b3d899185f8228b2eb9fc35c6ae3054244d441972c1e8b6a2a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for compiledb 0.9.2

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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page