1if(ENABLE_LLVM_SHARED) 2set(llvm_libs "LLVM") 3else() 4set(llvm_raw_libs bitwriter bpfcodegen debuginfodwarf irreader linker 5 mcjit objcarcopts option passes lto) 6if(ENABLE_LLVM_NATIVECODEGEN) 7set(llvm_raw_libs ${llvm_raw_libs} nativecodegen) 8endif() 9list(FIND LLVM_AVAILABLE_LIBS "LLVMCoverage" _llvm_coverage) 10if (${_llvm_coverage} GREATER -1) 11 list(APPEND llvm_raw_libs coverage) 12endif() 13list(FIND LLVM_AVAILABLE_LIBS "LLVMCoroutines" _llvm_coroutines) 14if (${_llvm_coroutines} GREATER -1) 15 list(APPEND llvm_raw_libs coroutines) 16endif() 17list(FIND LLVM_AVAILABLE_LIBS "LLVMFrontendOpenMP" _llvm_frontendOpenMP) 18if (${_llvm_frontendOpenMP} GREATER -1) 19 list(APPEND llvm_raw_libs frontendopenmp) 20endif() 21if (${LLVM_PACKAGE_VERSION} VERSION_EQUAL 6 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 6) 22 list(APPEND llvm_raw_libs bpfasmparser) 23 list(APPEND llvm_raw_libs bpfdisassembler) 24endif() 25if (${LLVM_PACKAGE_VERSION} VERSION_EQUAL 15 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 15) 26 list(APPEND llvm_raw_libs windowsdriver) 27endif() 28llvm_map_components_to_libnames(_llvm_libs ${llvm_raw_libs}) 29llvm_expand_dependencies(llvm_libs ${_llvm_libs}) 30endif() 31 32if(ENABLE_LLVM_SHARED AND NOT libclang-shared STREQUAL "libclang-shared-NOTFOUND") 33set(clang_libs ${libclang-shared}) 34else() 35# order is important 36set(clang_libs 37 ${libclangFrontend} 38 ${libclangSerialization} 39 ${libclangDriver}) 40 41if (${LLVM_PACKAGE_VERSION} VERSION_EQUAL 8 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 8) 42 list(APPEND clang_libs ${libclangASTMatchers}) 43endif() 44 45list(APPEND clang_libs 46 ${libclangParse} 47 ${libclangSema} 48 ${libclangCodeGen} 49 ${libclangAnalysis} 50 ${libclangRewrite} 51 ${libclangEdit} 52 ${libclangAST} 53 ${libclangLex} 54 ${libclangBasic}) 55endif() 56 57# prune unused llvm static library stuff when linking into the new .so 58set(_exclude_flags) 59foreach(_lib ${clang_libs}) 60 get_filename_component(_lib ${_lib} NAME) 61 set(_exclude_flags "${_exclude_flags} -Wl,--exclude-libs=${_lib}") 62endforeach(_lib) 63set(clang_lib_exclude_flags "${_exclude_flags}") 64 65set(_exclude_flags) 66foreach(_lib ${llvm_libs}) 67 get_filename_component(_lib ${_lib} NAME) 68 set(_exclude_flags "${_exclude_flags} -Wl,--exclude-libs=lib${_lib}.a") 69endforeach(_lib) 70set(llvm_lib_exclude_flags "${_exclude_flags}") 71