CMakeLists.txt revision c3b30b378741f3ec0f4d615ef172b68e1cf97e39
1# First, add the subdirectories which contain feature-based runtime libraries
2# and several convenience helper libraries.
3if(CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux")
4  # AddressSanitizer is supported on Linux and Mac OS X.
5  # Windows support is work in progress.
6  add_subdirectory(asan)
7  add_subdirectory(interception)
8  add_subdirectory(sanitizer_common)
9  if(NOT ANDROID)
10    add_subdirectory(lsan)
11    add_subdirectory(profile)
12    add_subdirectory(ubsan)
13  endif()
14endif()
15if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" AND NOT ANDROID)
16  # ThreadSanitizer and MemorySanitizer are supported on Linux only.
17  add_subdirectory(tsan)
18  add_subdirectory(msan)
19  add_subdirectory(msandr)
20endif()
21
22# The top-level lib directory contains a large amount of C code which provides
23# generic implementations of the core runtime library along with optimized
24# architecture-specific code in various subdirectories.
25
26set(GENERIC_SOURCES
27  absvdi2.c
28  absvsi2.c
29  absvti2.c
30  adddf3.c
31  addsf3.c
32  addvdi3.c
33  addvsi3.c
34  addvti3.c
35  apple_versioning.c
36  ashldi3.c
37  ashlti3.c
38  ashrdi3.c
39  ashrti3.c
40  # FIXME: atomic.c may only be compiled if host compiler understands _Atomic
41  # atomic.c
42  clear_cache.c
43  clzdi2.c
44  clzsi2.c
45  clzti2.c
46  cmpdi2.c
47  cmpti2.c
48  comparedf2.c
49  comparesf2.c
50  ctzdi2.c
51  ctzsi2.c
52  ctzti2.c
53  divdc3.c
54  divdf3.c
55  divdi3.c
56  divmoddi4.c
57  divmodsi4.c
58  divsc3.c
59  divsf3.c
60  divsi3.c
61  divti3.c
62  divxc3.c
63  enable_execute_stack.c
64  eprintf.c
65  extendsfdf2.c
66  ffsdi2.c
67  ffsti2.c
68  fixdfdi.c
69  fixdfsi.c
70  fixdfti.c
71  fixsfdi.c
72  fixsfsi.c
73  fixsfti.c
74  fixunsdfdi.c
75  fixunsdfsi.c
76  fixunsdfti.c
77  fixunssfdi.c
78  fixunssfsi.c
79  fixunssfti.c
80  fixunsxfdi.c
81  fixunsxfsi.c
82  fixunsxfti.c
83  fixxfdi.c
84  fixxfti.c
85  floatdidf.c
86  floatdisf.c
87  floatdixf.c
88  floatsidf.c
89  floatsisf.c
90  floattidf.c
91  floattisf.c
92  floattixf.c
93  floatundidf.c
94  floatundisf.c
95  floatundixf.c
96  floatunsidf.c
97  floatunsisf.c
98  floatuntidf.c
99  floatuntisf.c
100  floatuntixf.c
101  gcc_personality_v0.c
102  int_util.c
103  lshrdi3.c
104  lshrti3.c
105  moddi3.c
106  modsi3.c
107  modti3.c
108  muldc3.c
109  muldf3.c
110  muldi3.c
111  mulodi4.c
112  mulosi4.c
113  muloti4.c
114  mulsc3.c
115  mulsf3.c
116  multi3.c
117  mulvdi3.c
118  mulvsi3.c
119  mulvti3.c
120  mulxc3.c
121  negdf2.c
122  negdi2.c
123  negsf2.c
124  negti2.c
125  negvdi2.c
126  negvsi2.c
127  negvti2.c
128  paritydi2.c
129  paritysi2.c
130  parityti2.c
131  popcountdi2.c
132  popcountsi2.c
133  popcountti2.c
134  powidf2.c
135  powisf2.c
136  powitf2.c
137  powixf2.c
138  subdf3.c
139  subsf3.c
140  subvdi3.c
141  subvsi3.c
142  subvti3.c
143  trampoline_setup.c
144  truncdfsf2.c
145  ucmpdi2.c
146  ucmpti2.c
147  udivdi3.c
148  udivmoddi4.c
149  udivmodsi4.c
150  udivmodti4.c
151  udivsi3.c
152  udivti3.c
153  umoddi3.c
154  umodsi3.c
155  umodti3.c
156  )
157
158set(x86_64_SOURCES
159  x86_64/floatdidf.c
160  x86_64/floatdisf.c
161  x86_64/floatdixf.c
162  x86_64/floatundidf.S
163  x86_64/floatundisf.S
164  x86_64/floatundixf.S
165  ${GENERIC_SOURCES})
166
167set(i386_SOURCES
168  i386/ashldi3.S
169  i386/ashrdi3.S
170  i386/divdi3.S
171  i386/floatdidf.S
172  i386/floatdisf.S
173  i386/floatdixf.S
174  i386/floatundidf.S
175  i386/floatundisf.S
176  i386/floatundixf.S
177  i386/lshrdi3.S
178  i386/moddi3.S
179  i386/muldi3.S
180  i386/udivdi3.S
181  i386/umoddi3.S
182  ${GENERIC_SOURCES})
183
184foreach(arch x86_64 i386)
185  if(CAN_TARGET_${arch})
186    add_compiler_rt_static_runtime(clang_rt.${arch} ${arch}
187      SOURCES ${${arch}_SOURCES}
188      CFLAGS "-std=c99")
189  endif()
190endforeach()
191
192# Generate configs for running lit and unit tests.
193configure_lit_site_cfg(
194  ${CMAKE_CURRENT_SOURCE_DIR}/lit.common.configured.in
195  ${CMAKE_CURRENT_BINARY_DIR}/lit.common.configured)
196
197configure_lit_site_cfg(
198  ${CMAKE_CURRENT_SOURCE_DIR}/lit.common.unit.configured.in
199  ${CMAKE_CURRENT_BINARY_DIR}/lit.common.unit.configured)
200
201