I'm looking for a "Hello, world" pass example that ideally has all of
the following properties:
1) Complete. That is, it should have functional CMakeLists.txt,
etc. files.
2) Out-of-source. That is, it should build against a binary LLVM
installation.
3) Modern. That is, I don't want to use any deprecated APIs or
CMake macros.
4) Clang-compatible. That is, I'd like the pass to be able to run
directly from Clang instead of having to generate bitcode, run
opt on it, and then feed it back to Clang for linking.
Does such an example exist and if so, where can I find it?
Here's what I've considered to date:
* llvm/lib/Transforms/Hello, but this appears to be in-source only.
* http://llvm.org/docs/WritingAnLLVMPass.html, but this example
doesn't appear to be runnable directly from Clang.
* Building LLVM with CMake — LLVM 16.0.0git documentation, but its proposed CMake line of
"add_llvm_library(LLVMPassname MODULE Pass.cpp)" blows up with
CMake Error at /usr/local/lib/cmake/llvm/AddLLVM.cmake:659 (install):
install TARGETS given no LIBRARY DESTINATION for module target
"Hello".
Call Stack (most recent call first):
Hello/CMakeLists.txt:3 (add_llvm_library)
(Perhaps this is fixable with additional CMake macro calls, but
that's what I list "Complete" as a desideratum.)