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() 28if (${LLVM_PACKAGE_VERSION} VERSION_EQUAL 16 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 16) 29 list(APPEND llvm_raw_libs frontendhlsl) 30endif() 31 32llvm_map_components_to_libnames(_llvm_libs ${llvm_raw_libs}) 33llvm_expand_dependencies(llvm_libs ${_llvm_libs}) 34endif() 35 36if(ENABLE_LLVM_SHARED AND NOT libclang-shared STREQUAL "libclang-shared-NOTFOUND") 37set(clang_libs ${libclang-shared}) 38else() 39# order is important 40set(clang_libs 41 ${libclangFrontend} 42 ${libclangSerialization} 43 ${libclangDriver}) 44 45if (${LLVM_PACKAGE_VERSION} VERSION_EQUAL 8 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 8) 46 list(APPEND clang_libs ${libclangASTMatchers}) 47endif() 48 49list(APPEND clang_libs 50 ${libclangParse} 51 ${libclangSema} 52 ${libclangCodeGen} 53 ${libclangAnalysis} 54 ${libclangRewrite} 55 ${libclangEdit} 56 ${libclangAST} 57 ${libclangLex}) 58 59# if (${LLVM_PACKAGE_VERSION} VERSION_EQUAL 15 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 15) 60 list(APPEND clang_libs ${libclangSupport}) 61# endif() 62 63list(APPEND clang_libs 64 ${libclangBasic}) 65endif() 66 67# prune unused llvm static library stuff when linking into the new .so 68set(_exclude_flags) 69foreach(_lib ${clang_libs}) 70 get_filename_component(_lib ${_lib} NAME) 71 set(_exclude_flags "${_exclude_flags} -Wl,--exclude-libs=${_lib}") 72endforeach(_lib) 73set(clang_lib_exclude_flags "${_exclude_flags}") 74 75set(_exclude_flags) 76foreach(_lib ${llvm_libs}) 77 get_filename_component(_lib ${_lib} NAME) 78 set(_exclude_flags "${_exclude_flags} -Wl,--exclude-libs=lib${_lib}.a") 79endforeach(_lib) 80set(llvm_lib_exclude_flags "${_exclude_flags}") 81