1set(system_libs) 2if ( LLVM_ENABLE_ZLIB AND HAVE_LIBZ ) 3 set(system_libs ${system_libs} ${ZLIB_LIBRARIES}) 4endif() 5if( MSVC OR MINGW ) 6 # libuuid required for FOLDERID_Profile usage in lib/Support/Windows/Path.inc. 7 # advapi32 required for CryptAcquireContextW in lib/Support/Windows/Path.inc. 8 set(system_libs ${system_libs} psapi shell32 ole32 uuid advapi32) 9elseif( CMAKE_HOST_UNIX ) 10 if( HAVE_LIBRT ) 11 set(system_libs ${system_libs} rt) 12 endif() 13 if( HAVE_LIBDL ) 14 set(system_libs ${system_libs} ${CMAKE_DL_LIBS}) 15 endif() 16 if( HAVE_BACKTRACE AND NOT "${Backtrace_LIBRARIES}" STREQUAL "" ) 17 # On BSDs, CMake returns a fully qualified path to the backtrace library. 18 # We need to remove the path and the 'lib' prefix, to make it look like a 19 # regular short library name, suitable for appending to a -l link flag. 20 get_filename_component(Backtrace_LIBFILE ${Backtrace_LIBRARIES} NAME_WE) 21 STRING(REGEX REPLACE "^lib" "" Backtrace_LIBFILE ${Backtrace_LIBFILE}) 22 set(system_libs ${system_libs} ${Backtrace_LIBFILE}) 23 endif() 24 if(LLVM_ENABLE_TERMINFO) 25 if(HAVE_TERMINFO) 26 set(system_libs ${system_libs} ${TERMINFO_LIBS}) 27 endif() 28 endif() 29 if( LLVM_ENABLE_THREADS AND (HAVE_LIBATOMIC OR HAVE_CXX_LIBATOMICS64) ) 30 set(system_libs ${system_libs} atomic) 31 endif() 32 set(system_libs ${system_libs} ${LLVM_PTHREAD_LIB}) 33 if( UNIX AND NOT (BEOS OR HAIKU) ) 34 set(system_libs ${system_libs} m) 35 endif() 36 if( FUCHSIA ) 37 set(system_libs ${system_libs} zircon) 38 endif() 39endif( MSVC OR MINGW ) 40 41# Delay load shell32.dll if possible to speed up process startup. 42set (delayload_flags) 43if (MSVC) 44 set (delayload_flags delayimp -delayload:shell32.dll -delayload:ole32.dll) 45endif() 46 47# Link Z3 if the user wants to build it. 48if(LLVM_WITH_Z3) 49 set(Z3_LINK_FILES ${Z3_LIBRARIES}) 50else() 51 set(Z3_LINK_FILES "") 52endif() 53 54add_llvm_component_library(LLVMSupport 55 AArch64TargetParser.cpp 56 ABIBreak.cpp 57 ARMTargetParser.cpp 58 AMDGPUMetadata.cpp 59 APFloat.cpp 60 APInt.cpp 61 APSInt.cpp 62 ARMBuildAttrs.cpp 63 ARMAttributeParser.cpp 64 ARMWinEH.cpp 65 Allocator.cpp 66 BinaryStreamError.cpp 67 BinaryStreamReader.cpp 68 BinaryStreamRef.cpp 69 BinaryStreamWriter.cpp 70 BlockFrequency.cpp 71 BranchProbability.cpp 72 BuryPointer.cpp 73 CachePruning.cpp 74 circular_raw_ostream.cpp 75 Chrono.cpp 76 COM.cpp 77 CodeGenCoverage.cpp 78 CommandLine.cpp 79 Compression.cpp 80 CRC.cpp 81 ConvertUTF.cpp 82 ConvertUTFWrapper.cpp 83 CrashRecoveryContext.cpp 84 DataExtractor.cpp 85 Debug.cpp 86 DebugCounter.cpp 87 DeltaAlgorithm.cpp 88 DAGDeltaAlgorithm.cpp 89 DJB.cpp 90 ELFAttributeParser.cpp 91 ELFAttributes.cpp 92 Error.cpp 93 ErrorHandling.cpp 94 ExtensibleRTTI.cpp 95 FileCheck.cpp 96 FileCollector.cpp 97 FileUtilities.cpp 98 FileOutputBuffer.cpp 99 FoldingSet.cpp 100 FormattedStream.cpp 101 FormatVariadic.cpp 102 GlobPattern.cpp 103 GraphWriter.cpp 104 Hashing.cpp 105 InitLLVM.cpp 106 IntEqClasses.cpp 107 IntervalMap.cpp 108 ItaniumManglingCanonicalizer.cpp 109 JSON.cpp 110 KnownBits.cpp 111 LEB128.cpp 112 LineIterator.cpp 113 Locale.cpp 114 LockFileManager.cpp 115 LowLevelType.cpp 116 ManagedStatic.cpp 117 MathExtras.cpp 118 MemAlloc.cpp 119 MemoryBuffer.cpp 120 MD5.cpp 121 NativeFormatting.cpp 122 OptimizedStructLayout.cpp 123 Optional.cpp 124 Parallel.cpp 125 PluginLoader.cpp 126 PrettyStackTrace.cpp 127 RandomNumberGenerator.cpp 128 Regex.cpp 129 RISCVAttributes.cpp 130 RISCVAttributeParser.cpp 131 ScaledNumber.cpp 132 ScopedPrinter.cpp 133 SHA1.cpp 134 Signposts.cpp 135 SmallPtrSet.cpp 136 SmallVector.cpp 137 SourceMgr.cpp 138 SpecialCaseList.cpp 139 Statistic.cpp 140 StringExtras.cpp 141 StringMap.cpp 142 StringSaver.cpp 143 StringRef.cpp 144 SuffixTree.cpp 145 SymbolRemappingReader.cpp 146 SystemUtils.cpp 147 TarWriter.cpp 148 TargetParser.cpp 149 ThreadPool.cpp 150 TimeProfiler.cpp 151 Timer.cpp 152 ToolOutputFile.cpp 153 TrigramIndex.cpp 154 Triple.cpp 155 Twine.cpp 156 Unicode.cpp 157 UnicodeCaseFold.cpp 158 VersionTuple.cpp 159 VirtualFileSystem.cpp 160 WithColor.cpp 161 X86TargetParser.cpp 162 YAMLParser.cpp 163 YAMLTraits.cpp 164 raw_os_ostream.cpp 165 raw_ostream.cpp 166 regcomp.c 167 regerror.c 168 regexec.c 169 regfree.c 170 regstrlcpy.c 171 xxhash.cpp 172 Z3Solver.cpp 173 174# System 175 Atomic.cpp 176 DynamicLibrary.cpp 177 Errno.cpp 178 Host.cpp 179 Memory.cpp 180 Path.cpp 181 Process.cpp 182 Program.cpp 183 RWMutex.cpp 184 Signals.cpp 185 TargetRegistry.cpp 186 ThreadLocal.cpp 187 Threading.cpp 188 Valgrind.cpp 189 Watchdog.cpp 190 191 ADDITIONAL_HEADER_DIRS 192 Unix 193 Windows 194 ${LLVM_MAIN_INCLUDE_DIR}/llvm/ADT 195 ${LLVM_MAIN_INCLUDE_DIR}/llvm/Support 196 ${Backtrace_INCLUDE_DIRS} 197 LINK_LIBS ${system_libs} ${delayload_flags} ${Z3_LINK_FILES} 198 ) 199 200set_property(TARGET LLVMSupport PROPERTY LLVM_SYSTEM_LIBS "${system_libs}") 201 202if(LLVM_WITH_Z3) 203 target_include_directories(LLVMSupport SYSTEM 204 PRIVATE 205 ${Z3_INCLUDE_DIR} 206 ) 207endif() 208