Cross-compiling Clang on Gentoo Linux

On Ubuntu 20.04 I have

/usr/bin/llvm-tblgen
/usr/bin/llvm-tblgen-10
/usr/lib/llvm-10/bin/llvm-tblgen
/usr/local/bin/llvm-tblgen

Yes, I have those binaries as well. `llvm-tblgen` is, unlike
`clang-tblgen`, installed as part of the llvm package in Gentoo. I can
successfully cross-compile llvm. Likewise as clang, llvm requires the
`tblgen` binary for cross-compiling, but it's not an issue as it is
installed along with other llvm components.

The first three were installed from the distribution. The last was
compiled from the llvm-project at github. I do not have a
clang- tblgen.

Is your sequence something like this?

https://github.com/llvm/llvm-project
git clone https://github.com/llvm/llvm-project.git
cd llvm-project

And then what do you do?

I did not perform it directly like that, rather as part of the
packaging, but Gentoo, being source-based distribution, downaloads the
source and compiles the components from there, and sets some CMake
options [1].

Regards,
Jakov Smolic

[1] https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-devel/llvm/llvm-10.0.0.ebuild#n249

Just noticed a clang-tblgen after a compile of llvm and clang using the clang-llvm documented method.

/home/nnelson/Documents/llvm-project/build/bin/clang-tblgen

It is apparently not copied to /usr/bin/local during the install after a local build, but if you have that file, you could manually copy it and it might be found for your purpose.

If you do not have that file, we may need to come up with a different plan. The first one that comes to mind is to build clang-llvm using the documented method and then do the copy and continue with what you are doing. The second one, in a stretch, might be to get the file from a download, depending on the hardware you are using. There is a reasonably good chance I could copy the file I have here to you from this x86_64.

Neil Nelson

Just noticed a clang-tblgen after a compile of llvm and clang using the clang-llvm documented method.

/home/nnelson/Documents/llvm-project/build/bin/clang-tblgen

It is apparently not copied to /usr/bin/local during the install after a local build, but if you have that file, you could manually copy it and it might be found for your purpose.

Ok, so that is likely the issue here, the fact that this file is not
copied to the directory.

If you do not have that file, we may need to come up with a different plan. The first one that comes to mind is to build clang-llvm using the documented method and then do the copy and continue with what you are doing. The second one, in a stretch, might > be to get the file from a download, depending on the hardware you are using. There is a reasonably good chance I could copy the file I have here to you from this x86_64.

I don't have that file now on my local system now. Copying the file
should work as I am currently building the image for x86_64 platform,
but I think the best solution for my use-case would be to patch the
Gentoo package so that the `tblgen` binary is installed along with
other clang components. I am building Gentoo-based images for embedded
devices inside of a dockerized build system and use Gentoo packaging
to add software to the images, so maybe the simplest solution would be
to patch the Gentoo package.
I suspect that there is a CMake option missing from the Gentoo ebuild
or something else that prevents the `tblgen` binary from being
installed. I've also inquired about this to the Gentoo upstream but I
haven't received any input from Gentoo developers yet.

Could you provide me with the steps you performed to install the
`tblgen` binary, I can compare it then and see if there is something
missing from the Gentoo package.

Thank you for helping me!
Regards,
Jakov Smolic

Keeping cfe-dev in the loop.

Just emailed clang-tblgen to Jakov Smolic.

Neil Nelson

Thank you for sending me the binary.

I think this should be patched at the source to allow easier
cross-compiling.
Would it be possible to include the patch that would enable automatic
build of the clang-tblgen?