-
Notifications
You must be signed in to change notification settings - Fork 15.1k
Description
I initially tried to report this problem to the rust folks, ref. Rust issue 148450 but I got redirected here since the claim is that this is really an "upstream LLVM" issue.
To explain where I'm coming from: In my efforts to keep the various rust targets on NetBSD built & running, I'm cross-building rust for the various targets on NetBSD/amd64 as a host. The monthly rust release tarballs contain an embedded version of LLVM which also needs to be cross-built. With the recent release of rust 1.91.0, I found a new problem which crops up.
Rust 1.90.0 has LLVM version 20.1.8 embedded.
Rust 1.91.0 has LLVM version 21.1.2 embedded.
In the cross-compilation setup I'm using, some of the compiler arguments have to be added to or transformed. In particular, --sysroot=/target/root needs to be added, and -isystem /some/dir is transformed to -isystem =/some/dir (to get the sysroot prepended), on the assumption that -isystem is used to indicate where the "system-supplied headers" are to be searched for (they may vary in important ways between different target systems). It then becomes problematic to use -isystem to point to a directory inside the LLVM source distribution, and in my opinion, the -I option should have been used in that case instead. The fatal build error I observed was:
/usr/pkgsrc/wip/rust191/work/rustc-1.91.0-src/src/llvm-project/llvm/lib/Support/SipHash.cpp:15:10: fatal error: siphash/SipHash.h: No such file or directory
#include "siphash/SipHash.h"
^~~~~~~~~~~~~~~~~~~
compilation terminated.
More details about the compiler invocation can be found in the rust issue referred to above.
I found a temporary hackish workaround by modifying my "gcc wrapper script" to rewrite this particular -isystem usage to use -I instead, but ... that should not have been required.
I have made a feeble attempt at locating where this particular -isystem comes from within the LLVM build system, but at least grep'ing for isystem reveals far too many occurrences to wade through, and also matching with siphash then gives me no matches. So some assistance from someone more versed in the LLVM build system would be much appreciated.
So ... can anyone help?