Modularize the backend: Build a separated LLVM rutime