1 #ifndef CPPAD_CG_LLVM_BASE_MODEL_LIBRARY_PROCESSOR_INCLUDED 2 #define CPPAD_CG_LLVM_BASE_MODEL_LIBRARY_PROCESSOR_INCLUDED 39 static std::string findInternalClangCHeaders(
const std::string& version,
40 const std::string& resourceDir) {
42 for (
const std::string& path : explode(resourceDir,
" ")) {
48 #ifdef CPPAD_CG_SYSTEM_LINUX 49 std::string clangHeaders =
"/usr/lib/clang/" + version +
"/include";
60 const std::string& version) {
64 if (clang.getVersion() != version) {
67 bool error = expected.size() > execVersion.size();
69 for (
size_t i = 0; i < expected.size(); ++i) {
70 if (expected[i] != execVersion[i]) {
77 throw CGException(
"Expected a clang with version '", version,
"' but found version '", clang.getVersion(),
"'");
81 const std::map<std::string, ModelCSourceGen<Base>*>& models = this->modelLibraryHelper_->getModels();
86 for (
const auto& p : models) {
87 const std::map<std::string, std::string>& modelSources = this->getSources(*p.second);
89 this->modelLibraryHelper_->startingJob(
"", JobTimer::COMPILING_FOR_MODEL);
90 clang.generateLLVMBitCode(modelSources, this->modelLibraryHelper_);
91 this->modelLibraryHelper_->finishedJob();
94 const std::map<std::string, std::string>& sources = this->getLibrarySources();
95 clang.generateLLVMBitCode(sources, this->modelLibraryHelper_);
97 const std::map<std::string, std::string>& customSource = this->modelLibraryHelper_->getCustomSources();
98 clang.generateLLVMBitCode(customSource, this->modelLibraryHelper_);
104 return clang.getBitCodeFiles();
std::string createPath(const std::string &baseFolder, const std::string &file)
const std::set< std::string > & createBitCode(ClangCompiler< Base > &clang, const std::string &version)
bool isDirectory(const std::string &path)
bool isFile(const std::string &path)