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