I noticed that there appear to be some layering issues in the ExecutionEngine libraries. The includes between the Orc and JITLink components have a lot of cycles. From reading https://groups.google.com/g/llvm-dev/c/uOKEZ-1THf4/m/aHiR5gTOAwAJ it seems like the goal is for shared components to be in Orc/Shared. Perhaps more things could move in there
Sorry for the delayed reply! Yep – some of this mess crept in while TargetProcess and Shared were being broken out. I start looking at a refactor to sort this out tomorrow, but it might take a little while to untangle.
OrcShared has no dependencies.
OrcTargetProcess depends on OrcShared, but nothing else.
JITLink depends on OrcTargetProcess and OrcShared.
Orc depends on the previous three.
There are some dependencies between Orc and ExecutionSession. I expect they will be removed in the LLVM 13 timeframe though.