Skip to main content

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

Project description

Compilation Database Generator

CircleCI branch PyPI PyPI - Python Version GitHub

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'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

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.8.tar.gz (11.5 kB view details)

Uploaded Source

Built Distributions

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

compiledb-0.9.8-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

compiledb-0.9.8-py2-none-any.whl (12.4 kB view details)

Uploaded Python 2

File details

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

File metadata

  • Download URL: compiledb-0.9.8.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using 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.6.5

File hashes

Hashes for compiledb-0.9.8.tar.gz
Algorithm Hash digest
SHA256 ded1e9f69c20b62ddc761900bbd48faa9da21b77e4301376515ee1f7ed362a06
MD5 06cf7723cfe18a6c4f49fcd365bc290f
BLAKE2b-256 20b8b0912c8198baf67ebba62c46d21bbb16f03ff072eee782ee659dd11520ee

See more details on using hashes here.

File details

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

File metadata

  • Download URL: compiledb-0.9.8-py3-none-any.whl
  • Upload date:
  • Size: 12.4 kB
  • Tags: Python 3
  • Uploaded using 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.6.5

File hashes

Hashes for compiledb-0.9.8-py3-none-any.whl
Algorithm Hash digest
SHA256 dc7245d8df102f99589bdbb8eb34a379978ec11e5245e6f31c479e1227ec737c
MD5 9978c0228292adf4d5708f1495545cfc
BLAKE2b-256 f393cf32ff4c28aa3d22e35ae6f3648abf3d67ffc068d6f946191a7647372857

See more details on using hashes here.

File details

Details for the file compiledb-0.9.8-py2-none-any.whl.

File metadata

  • Download URL: compiledb-0.9.8-py2-none-any.whl
  • Upload date:
  • Size: 12.4 kB
  • Tags: Python 2
  • Uploaded using 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.6.5

File hashes

Hashes for compiledb-0.9.8-py2-none-any.whl
Algorithm Hash digest
SHA256 2a3b6c30431e6bfbeb5178bcaf58d0607f585c1336c5c42c2bb880f085d1fd48
MD5 69a2d7c57cb1d071a003b791f396c60b
BLAKE2b-256 5fecdc88c84fab552c2bcb2dc32547c54fba23878cd45c2f9db861d09354adf9

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