How to configure cmake to not rebuild .inc (tablegen) files?

Dear all,

I’m developing Clang&LLVM on MacOS Catalina 10.15.
Now every time I “make clang”, the building systems rebuilds
all the .inc files generated by cmake, which essentially
rebuilds all the tablegen files in llvm, although I did not
change any of the tablegen files. The building is unnecessary
and slow, especially when it builds the X86GenSubtargetInfo.inc.
Is there a way to prevent cmake generating Makefiles that
rebuilds all the tablegen files?

Here is my command line to run cmake for generating Makefiles:

cmake -G “Unix Makefiles” -DLLVM_TARGETS_TO_BUILD=“X86" -DCMAKE_BUILD_TYPE=Debug $(LLVM_SRC)

The cmake version is 3.13.4. And I did not experience the same behavior on a Linux.

Thanks,

  • Jie

Hi Jie,

I’m using a Mac with Xcode and found that specifying DLLVM_OPTIMIZED_TABLEGEN=On helped. Incremental builds are faster but tablegen files are run every time anyway, so it’s not actually a fix. I posted this issue before but it seems solving this is not that easy, at least for Xcode.

In the case of Xcode I found big speed improvements after saving the project xcuserdata folder in a safe place, deleting the entire “build” folder, re-creating a fresh “build” with cmake, and moving the xcuserdata folder I saved before in place. Unfortunately, this stops working as soon as I checkout branches, or pull commits from origin, so I need to repeat the same procedure to get fast compiles again.

John,

Are you saying that if you re-run make clang immediately after the first invocation complete you see these files rebuilt? You’re not changing anything in the repo or running git pull (or equivalent)? This would really not be expected.

Dear all,

I’m developing Clang&LLVM on MacOS Catalina 10.15.
Now every time I “make clang”, the building systems rebuilds
all the .inc files generated by cmake,

Are you saying that if you re-run make clang immediately after the first invocation complete you see these files rebuilt? You’re not changing anything in the repo or running git pull (or equivalent)? This would really not be expected.

Yes the tablegen files get recompiled immediately after I run a make clang. I checked on a Ubuntu and did not see the same behavior.
But luckily Joan’s suggestion works: the -DLLVM_OPTIMIZED_TABLEGEN for cmake will do the trick.

  • Jie