1 if(ENABLE_LLVM_SHARED) 2 set(llvm_libs "LLVM") 3 else() 4 set(llvm_raw_libs bitwriter bpfcodegen debuginfodwarf irreader linker 5 mcjit objcarcopts option passes nativecodegen lto) 6 list(FIND LLVM_AVAILABLE_LIBS "LLVMCoverage" _llvm_coverage) 7 if (${_llvm_coverage} GREATER -1) 8 list(APPEND llvm_raw_libs coverage) 9 endif() 10 list(FIND LLVM_AVAILABLE_LIBS "LLVMCoroutines" _llvm_coroutines) 11 if (${_llvm_coroutines} GREATER -1) 12 list(APPEND llvm_raw_libs coroutines) 13 endif() 14 if (${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) 17 endif() 18 llvm_map_components_to_libnames(_llvm_libs ${llvm_raw_libs}) 19 llvm_expand_dependencies(llvm_libs ${_llvm_libs}) 20 endif() 21 22 # order is important 23 set(clang_libs 24 ${libclangFrontend} 25 ${libclangSerialization} 26 ${libclangDriver}) 27 28 if (${LLVM_PACKAGE_VERSION} VERSION_EQUAL 8 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 8) 29 list(APPEND clang_libs ${libclangASTMatchers}) 30 endif() 31 32 list(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 44 set(_exclude_flags) 45 foreach(_lib ${clang_libs}) 46 get_filename_component(_lib ${_lib} NAME) 47 set(_exclude_flags "${_exclude_flags} -Wl,--exclude-libs=${_lib}") 48 endforeach(_lib) 49 set(clang_lib_exclude_flags "${_exclude_flags}") 50 51 set(_exclude_flags) 52 foreach(_lib ${llvm_libs}) 53 get_filename_component(_lib ${_lib} NAME) 54 set(_exclude_flags "${_exclude_flags} -Wl,--exclude-libs=lib${_lib}.a") 55 endforeach(_lib) 56 set(llvm_lib_exclude_flags "${_exclude_flags}") 57