xref: /openbsd-src/gnu/llvm/llvm/lib/Support/CMakeLists.txt (revision f1dd7b858388b4a23f4f67a4957ec5ff656ebbe8)
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