[llvm-dev] How to configure cmake to not rebuild .inc (tablegen) files?

331 views
Skip to first unread message

Jie Zhou via llvm-dev

unread,
Oct 20, 2019, 7:21:13 PM10/20/19
to Rui Ueyama via llvm-dev
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

Joan Lluch via llvm-dev

unread,
Oct 21, 2019, 3:11:56 AM10/21/19
to Jie Zhou, Rui Ueyama via llvm-dev
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, 


_______________________________________________
LLVM Developers mailing list
llvm...@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

Mehdi AMINI via llvm-dev

unread,
Oct 21, 2019, 2:17:16 PM10/21/19
to Jie Zhou, Rui Ueyama via llvm-dev
On Sun, Oct 20, 2019 at 4:21 PM Jie Zhou via llvm-dev <llvm...@lists.llvm.org> wrote:
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.

-- 
Mehdi


 
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

Jie Zhou via llvm-dev

unread,
Oct 21, 2019, 4:00:22 PM10/21/19
to Mehdi AMINI, Rui Ueyama via llvm-dev

On Oct 21, 2019, at 14:16, Mehdi AMINI <joke...@gmail.com> wrote:



On Sun, Oct 20, 2019 at 4:21 PM Jie Zhou via llvm-dev <llvm...@lists.llvm.org> wrote:
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
Reply all
Reply to author
Forward
0 new messages