You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* [jit] Self-contain the OOP-JIT runtime in CppInterOp's distribution.
Out-of-process JIT needs `liborc_rt*.a` (fed to
`IncrementalExecutorBuilder::OrcRuntimePath`) and
`llvm-jitlink-executor`. Upstream's auto-discovery validates the
runtime path against `parent_path(D.Dir)`, which only matches when
`libclangCppInterOp.so` lives inside the LLVM install tree -- test
binaries under `<build>/unittests/...` trip the safety check.
Bundle both artifacts under `<libdir>/cppinterop-rt/` via a new
`FindLLVMOrcRuntime` cmake module and configure_file/install rules,
and hand the paths to `IncrementalExecutorBuilder` directly with a
no-op `UpdateOrcRuntimePathCB`. The locations are baked at build
time (`CPPINTEROP_RUNTIME_{BUILD,INSTALL}_DIR`); when the runtime
parts are missing the OOP path falls back to in-process JIT with a
logged warning. Relocatable-install support (sysadmin-overridable
runtime dir, `dladdr`-based self-DSO probe) is a separate follow-up
PR layered on top of this baked probe.
Drops the now-unused `LLVM_BUILT_WITH_OOP_JIT` cmake option and the
`LLVM_BINARY_LIB_DIR` define (its only consumer was the old
hand-built executor path); README, InstallationAndUsage.rst, and
DevelopersDocumentation.rst are updated to describe auto-detection.
* [ci] Build the bundled OOP-JIT runtime in non-cling LLVM>=22 caches.
Activates the bundling design from `[jit] Self-contain the OOP-JIT
runtime in CppInterOp's distribution.`:
- `Build_LLVM/action.yml`: for non-cling rows with `clang-runtime
>= 22`, set `LLVM_ENABLE_PROJECTS="clang;compiler-rt"` and ninja
`llvm-jitlink-executor` plus every `orc_rt*` target ninja exposes
(other compiler-rt components are turned off so build cost is
bounded to the ORC runtime). The matrix `llvm_enable_projects`
override is no longer load-bearing: the projects list is now
picked entirely from `NEED_OOP`.
- `Build_and_Test_CppInterOp/action.yml`: drop
`-DLLVM_BUILT_WITH_OOP_JIT`; CppInterOp auto-detects via
`find_package(LLVMOrcRuntime)`. The Valgrind suppression file
selection moves from `matrix.oop-jit` to `clang-runtime >= 22`,
matching the auto-detect condition that now drives OOP at
runtime. Adds two post-build assertions: (a) the typed-test
fixtures registered match the source-side gate -- the
`OutOfProcessJIT` fixture must NOT be present on `clang-runtime
<= 21`, catching accidental regressions of the
`LLVM_VERSION_MAJOR > 21` guard in `unittests/CppInterOp/Utils.h`;
(b) an install-layout smoke test that installs into a scratch
prefix and asserts `<libdir>/cppinterop-rt/liborc_rt.a` is
shipped and `llvm-jitlink-executor` retains its executable bit,
catching install(FILES/PROGRAMS) destination/mode regressions.
- `main.yml`: drop the `-oop` cache-key suffix and the `oop-jit`
matrix dimension along with its rows. `osx26-arm-clang-llvm22-oop`
was a duplicate of `osx26-arm-clang-llvm22` once the OOP knob
retired; `ubu24-x86-gcc12-llvm22-oop-vg` was unique only for its
Valgrind axis and is renamed to `ubu24-x86-gcc12-llvm22-vg`. OOP
and in-process rows on the same axes now share a cache slot;
existing entries match the new key but need a refresh to gain
the runtime parts -- transitional rows fall back to in-process
JIT with a logged warning.
0 commit comments