Skip to main content

CircleCI 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 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.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, 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.7

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.7
File Size Uploaded
compiledb-0.9.7.tar.gz 10.0 kB Details

Built distributions (wheels)

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

Total release size: 34.6 kB

Release files / compiledb-0.9.7.tar.gz

Download URL compiledb-0.9.7.tar.gz
Size 10.0 kB
Tags Source
SHA-256 checksum
How to use checksums
872bdb8210dac421512dc214c3f07d6b6fad5e0af1c6826b123d551a9580654a
BLAKE2b-256 checksum
How to use checksums
e40eb6362319348a2c9a1f81cf25dd735181f48c3301ce196d9b0a6e4b52b235
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.7.0

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

Download URL compiledb-0.9.7-py3-none-any.whl
Size 12.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
39b81df1e8821d9c85da66dab74a182bd2e17ca9439ba32e07904e7b97856d27
BLAKE2b-256 checksum
How to use checksums
b2aa9ed7e4567117eae187782fc7df10ef692c12bf2876b63df2c47994cf6701
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.7.0

Release files / compiledb-0.9.7-py2-none-any.whl

Download URL compiledb-0.9.7-py2-none-any.whl
Size 12.3 kB
Tags Python 2
SHA-256 checksum
How to use checksums
2d267d92cda91874cde5e8aebc8131a1313f9ae44472da57e9e536f113e6fa82
BLAKE2b-256 checksum
How to use checksums
eb44d2ab1776305fe4e386050f56f788a369178bfbbde6bc0afa239154807b07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.7.0

Release history Release notifications | RSS feed

0.10.7

2 release files

0.10.6

2 release files

0.10.5

2 release files

0.10.1

3 release files

0.10.0

3 release files

0.9.8

3 release files

This release

0.9.7 This release

3 release files

0.9.6

3 release files

0.9.5

3 release files

0.9.2

2 release files

0.9.1

2 release files

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