logoalt Hacker News

AceJohnny210/11/20242 repliesview on HN

If you have control over the build system, clang can generate that directly nowadays, by adding -MJ path to CFLAGS (or equiv). This will save JSON fragments to path (make'em separate for each compiled file), then you can concatenate all the fragments into a compilation database.

I use this approach because on macOS, with SIP, Bear no longer works as it is forbidden from injecting its hooks into the system-protected clang shim. There may be other solutions.

(I haven't explored the space in a few years. They've historically fared poorly with embedded targets where one file may be compiled many different ways for targeting different platforms)


Replies

rbalint10/12/2024

If you would like to make similar hooks work again on macOS, check out this guide: https://firebuild.com/setup-macos . Firebuild uses similar technique to explore the process tree and create a report with CPU utilizations highlighted in a graphical process tree graph.

maccard10/11/2024

One of the major problems approach with this is that you need to run the compile before you can generate this database.

show 4 replies