CMakeLists.txt revision eee71ae5c1f4ce71612fac359463a54bc867abd6
127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi# First, add the subdirectories which contain feature-based runtime libraries
227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi# and several convenience helper libraries.
327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiif(CMAKE_SYSTEM_NAME MATCHES "Darwin|Linux")
427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  # AddressSanitizer is supported on Linux and Mac OS X.
527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  # Windows support is work in progress.
627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  add_subdirectory(asan)
727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  add_subdirectory(interception)
827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  add_subdirectory(sanitizer_common)
927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  if(NOT ANDROID)
1027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    add_subdirectory(lsan)
1127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    add_subdirectory(profile)
1227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    add_subdirectory(ubsan)
1327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  endif()
1427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiendif()
1527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" AND NOT ANDROID)
1627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  # ThreadSanitizer and MemorySanitizer are supported on Linux only.
1727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  add_subdirectory(tsan)
1827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  add_subdirectory(msan)
1927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  add_subdirectory(msandr)
2027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  add_subdirectory(dfsan)
2127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiendif()
2227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
2327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi# The top-level lib directory contains a large amount of C code which provides
2427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi# generic implementations of the core runtime library along with optimized
2527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi# architecture-specific code in various subdirectories.
2627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
2727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiset(GENERIC_SOURCES
2827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  absvdi2.c
2927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  absvsi2.c
3027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  absvti2.c
3127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  adddf3.c
3227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  addsf3.c
3327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  addvdi3.c
3427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  addvsi3.c
3527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  addvti3.c
3627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  apple_versioning.c
3727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  ashldi3.c
3827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  ashlti3.c
3927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  ashrdi3.c
4027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  ashrti3.c
4127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  # FIXME: atomic.c may only be compiled if host compiler understands _Atomic
4227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  # atomic.c
4327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  clear_cache.c
4427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  clzdi2.c
4527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  clzsi2.c
4627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  clzti2.c
4727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  cmpdi2.c
4827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  cmpti2.c
498f00151cbe693d52f3e233757c57fab3b6396d21Gloria Wang  comparedf2.c
502272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi  comparesf2.c
512272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi  ctzdi2.c
522272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi  ctzsi2.c
53e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi  ctzti2.c
5427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  divdc3.c
55e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi  divdf3.c
5627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  divdi3.c
5727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  divmoddi4.c
5827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  divmodsi4.c
5927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  divsc3.c
6027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  divsf3.c
6127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  divsi3.c
623473846f64f5b28e1cbeb70ef5867073fc93159eTakeshi Aimi  divti3.c
633473846f64f5b28e1cbeb70ef5867073fc93159eTakeshi Aimi  divxc3.c
6427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  enable_execute_stack.c
6527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  eprintf.c
6627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  extendsfdf2.c
6727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  ffsdi2.c
6827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  ffsti2.c
6927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  fixdfdi.c
702272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi  fixdfsi.c
7127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  fixdfti.c
7227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  fixsfdi.c
73bf5b3b29e31b293313788d7464cfb258ac0da803James Dong  fixsfsi.c
7427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  fixsfti.c
7527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  fixunsdfdi.c
7627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  fixunsdfsi.c
7727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  fixunsdfti.c
7827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  fixunssfdi.c
792272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi  fixunssfsi.c
8027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  fixunssfti.c
812272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi  fixunsxfdi.c
82a2cd44cb5067b4fe98794860690394254d3ac73cGloria Wang  fixunsxfsi.c
8327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  fixunsxfti.c
8427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  fixxfdi.c
8527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  fixxfti.c
8627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  floatdidf.c
872272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi  floatdisf.c
8827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  floatdixf.c
892272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi  floatsidf.c
9027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  floatsisf.c
9127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  floattidf.c
9227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  floattisf.c
9327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  floattixf.c
9427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  floatundidf.c
9527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  floatundisf.c
9627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  floatundixf.c
9727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  floatunsidf.c
9827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  floatunsisf.c
999d2f386dd2885eaffa11fd494ae258bb09fe6397James Dong  floatuntidf.c
1009d2f386dd2885eaffa11fd494ae258bb09fe6397James Dong  floatuntisf.c
10127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  floatuntixf.c
1029d2f386dd2885eaffa11fd494ae258bb09fe6397James Dong  gcc_personality_v0.c
1039d2f386dd2885eaffa11fd494ae258bb09fe6397James Dong  int_util.c
104e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi  lshrdi3.c
105cba7b32d8f2c47632313f54118ed3733b4b02cc8Kei Takahashi  lshrti3.c
106cba7b32d8f2c47632313f54118ed3733b4b02cc8Kei Takahashi  moddi3.c
107cba7b32d8f2c47632313f54118ed3733b4b02cc8Kei Takahashi  modsi3.c
1082272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi  modti3.c
10927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  muldc3.c
1102272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi  muldf3.c
11127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  muldi3.c
11227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  mulodi4.c
1132272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi  mulosi4.c
1142272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi  muloti4.c
11527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  mulsc3.c
1162272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi  mulsf3.c
11727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  multi3.c
11827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  mulvdi3.c
119a2cd44cb5067b4fe98794860690394254d3ac73cGloria Wang  mulvsi3.c
12027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  mulvti3.c
1218635b7b095fbf7ffc63d3ce791891a9116ace1f6James Dong  mulxc3.c
1228635b7b095fbf7ffc63d3ce791891a9116ace1f6James Dong  negdf2.c
12327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  negdi2.c
12427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  negsf2.c
12527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  negti2.c
12627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  negvdi2.c
12727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  negvsi2.c
12827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  negvti2.c
12927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  paritydi2.c
13027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi  paritysi2.c
131  parityti2.c
132  popcountdi2.c
133  popcountsi2.c
134  popcountti2.c
135  powidf2.c
136  powisf2.c
137  powitf2.c
138  powixf2.c
139  subdf3.c
140  subsf3.c
141  subvdi3.c
142  subvsi3.c
143  subvti3.c
144  trampoline_setup.c
145  truncdfsf2.c
146  ucmpdi2.c
147  ucmpti2.c
148  udivdi3.c
149  udivmoddi4.c
150  udivmodsi4.c
151  udivmodti4.c
152  udivsi3.c
153  udivti3.c
154  umoddi3.c
155  umodsi3.c
156  umodti3.c
157  )
158
159set(x86_64_SOURCES
160  x86_64/floatdidf.c
161  x86_64/floatdisf.c
162  x86_64/floatdixf.c
163  x86_64/floatundidf.S
164  x86_64/floatundisf.S
165  x86_64/floatundixf.S
166  ${GENERIC_SOURCES})
167
168set(i386_SOURCES
169  i386/ashldi3.S
170  i386/ashrdi3.S
171  i386/divdi3.S
172  i386/floatdidf.S
173  i386/floatdisf.S
174  i386/floatdixf.S
175  i386/floatundidf.S
176  i386/floatundisf.S
177  i386/floatundixf.S
178  i386/lshrdi3.S
179  i386/moddi3.S
180  i386/muldi3.S
181  i386/udivdi3.S
182  i386/umoddi3.S
183  ${GENERIC_SOURCES})
184
185foreach(arch x86_64 i386)
186  if(CAN_TARGET_${arch})
187    add_compiler_rt_static_runtime(clang_rt.${arch} ${arch}
188      SOURCES ${${arch}_SOURCES}
189      CFLAGS "-std=c99")
190  endif()
191endforeach()
192
193# Generate configs for running lit and unit tests.
194configure_lit_site_cfg(
195  ${CMAKE_CURRENT_SOURCE_DIR}/lit.common.configured.in
196  ${CMAKE_CURRENT_BINARY_DIR}/lit.common.configured)
197
198configure_lit_site_cfg(
199  ${CMAKE_CURRENT_SOURCE_DIR}/lit.common.unit.configured.in
200  ${CMAKE_CURRENT_BINARY_DIR}/lit.common.unit.configured)
201
202