langston-barrrett.github.io
WLLVM
A tool for compiling C/C++ to LLVM bitcode. See also GLLVM.
Example
nix-shell --pure -p clang_6 -p wllvm --run "wllvm -c test.cpp && extract-bc test.o"
nix-shell test.nix --pure --run "wllvm++ -o test -static -g -O1 test.cpp"
nix-shell test.nix --pure --run "extract-bc test"
nix-shell test.nix --pure --run "llvm-dis test.bc > test.ll"
where
with import <nixpkgs> { };
llvmPackages.stdenv.mkDerivation {
name = "test";
buildInputs = [
file
wllvm
clang_6
llvm_6
llvmPackages_6.compiler-rt
glibc.static
];
src = lib.sourceFilesBySuffices ./. [ ".cpp" ];
LLVM_COMPILER = "clang";
}
Linking
wllvm will bring in the definitions from your project.
However, if you're including stuff from other libraries, that will
have to be linked manually. Confusingly, wllvm will bring
in anything in the header files, and with C++ templates, this can be
a surprisingly large amount of what gets included from libraries
(especially libstdc++).
Error Messages
wllvm requires the file utility.
WARNING:wllvm: exception case: [Errno 2] No such file or directory: 'file': 'file'