Skip to main content

Tool for generating Clang JSON Compilation Database files for make-based build systems.

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

compiledb-0.9.1.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

compiledb-0.9.1-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file compiledb-0.9.1.tar.gz.

File metadata

  • Download URL: compiledb-0.9.1.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for compiledb-0.9.1.tar.gz
Algorithm Hash digest
SHA256 1127e3179bef02d8eea5470520905c6ca16a72efa0b966d7b1477930cf1e1388
MD5 b0df51e48b152368cee62ac6efbbcde0
BLAKE2b-256 8744344805b1b3a5173b8f36df8ba5311f4624fbe12795bdab0c0b19d76ff2a0

See more details on using hashes here.

File details

Details for the file compiledb-0.9.1-py3-none-any.whl.

File metadata

File hashes

Hashes for compiledb-0.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e8a2ac6fb21fff3679e7fca4fec197581b1dd76ff9dac430c9c2d32e55d96341
MD5 bbb45af1420fa2abfc410bf0a76cc79f
BLAKE2b-256 1d05c42eb820c973f25f3c5aec497585deb4e7927550762af2c65e977936f26b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page