Why does clang build native llvm-config? Is there any way to avoid it?

I’m cross compiling llvm/libclang. About halfway through a libclang build cmake always runs another configure step in the NATIVE directory.

This causes problems with configuration settings and pre-compiler definitions. For instance I can’t get STRICT_ANSI to stay unset through CMAKE_CXX_FLAGS. It works for first 49% of the build but after that reconfigure at the 50% mark in the NATIVE dir STRICT_ANSI gets set again causing the build to error out on isascii calls.

After patching that I ran into a bunch of other issues including missing strsignal and am beginning to wonder why we need a native llvm-config and why we can’t just point to it like we do native tablegen (-DLLVM_TABLEGEN=path/to/llvm-tablegen)

Any thoughts? Any way to avoid this step? Any ideas where to start poking around to understand how to get my includes setup properly for this native build portion while not screwing with the cross compile?

P.S. The llvmdev@cs.uiuc.edu email that used to work to post to the list and the one posted here no longer works and is bouncing: http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev Looks like an alias was taken down in early August if that archive cutting off then is a sign.




The native llvm-config isn’t needed by the build, but it is included as part of the ‘all’ target. The idea is that if you’re cross compiling you’ll want a host-executable llvm-config to configure clients using the cross-built LLVM from your host.

Since the CMake build doesn’t actually use llvm-config, we could probably make an option to exclude it from the ‘all’ target, but we probably don’t want that to be the default behavior because it is very useful.