CMakeLists.txt revision 5a869d4603ce41572b6f2f9b5b2f305a16596e63
1# This directory contains a large amount of C code which provides
2# generic implementations of the core runtime library along with optimized
3# architecture-specific code in various subdirectories.
4
5set(GENERIC_SOURCES
6  absvdi2.c
7  absvsi2.c
8  absvti2.c
9  adddf3.c
10  addsf3.c
11  addtf3.c
12  addvdi3.c
13  addvsi3.c
14  addvti3.c
15  apple_versioning.c
16  ashldi3.c
17  ashlti3.c
18  ashrdi3.c
19  ashrti3.c
20  # FIXME: atomic.c may only be compiled if host compiler understands _Atomic
21  # atomic.c
22  clear_cache.c
23  clzdi2.c
24  clzsi2.c
25  clzti2.c
26  cmpdi2.c
27  cmpti2.c
28  comparedf2.c
29  comparesf2.c
30  ctzdi2.c
31  ctzsi2.c
32  ctzti2.c
33  divdc3.c
34  divdf3.c
35  divdi3.c
36  divmoddi4.c
37  divmodsi4.c
38  divsc3.c
39  divsf3.c
40  divsi3.c
41  divti3.c
42  divtf3.c
43  divxc3.c
44  enable_execute_stack.c
45  eprintf.c
46  extendsfdf2.c
47  ffsdi2.c
48  ffsti2.c
49  fixdfdi.c
50  fixdfsi.c
51  fixdfti.c
52  fixsfdi.c
53  fixsfsi.c
54  fixsfti.c
55  fixunsdfdi.c
56  fixunsdfsi.c
57  fixunsdfti.c
58  fixunssfdi.c
59  fixunssfsi.c
60  fixunssfti.c
61  fixunsxfdi.c
62  fixunsxfsi.c
63  fixunsxfti.c
64  fixxfdi.c
65  fixxfti.c
66  floatdidf.c
67  floatdisf.c
68  floatdixf.c
69  floatsidf.c
70  floatsisf.c
71  floattidf.c
72  floattisf.c
73  floattixf.c
74  floatundidf.c
75  floatundisf.c
76  floatundixf.c
77  floatunsidf.c
78  floatunsisf.c
79  floatuntidf.c
80  floatuntisf.c
81  floatuntixf.c
82  gcc_personality_v0.c
83  int_util.c
84  lshrdi3.c
85  lshrti3.c
86  moddi3.c
87  modsi3.c
88  modti3.c
89  muldc3.c
90  muldf3.c
91  muldi3.c
92  mulodi4.c
93  mulosi4.c
94  muloti4.c
95  mulsc3.c
96  mulsf3.c
97  multi3.c
98  mulvdi3.c
99  mulvsi3.c
100  mulvti3.c
101  mulxc3.c
102  negdf2.c
103  negdi2.c
104  negsf2.c
105  negti2.c
106  negvdi2.c
107  negvsi2.c
108  negvti2.c
109  paritydi2.c
110  paritysi2.c
111  parityti2.c
112  popcountdi2.c
113  popcountsi2.c
114  popcountti2.c
115  powidf2.c
116  powisf2.c
117  powitf2.c
118  powixf2.c
119  subdf3.c
120  subsf3.c
121  subvdi3.c
122  subvsi3.c
123  subvti3.c
124  subtf3.c
125  trampoline_setup.c
126  truncdfsf2.c
127  ucmpdi2.c
128  ucmpti2.c
129  udivdi3.c
130  udivmoddi4.c
131  udivmodsi4.c
132  udivmodti4.c
133  udivsi3.c
134  udivti3.c
135  umoddi3.c
136  umodsi3.c
137  umodti3.c)
138
139set(x86_64_SOURCES
140  x86_64/floatdidf.c
141  x86_64/floatdisf.c
142  x86_64/floatdixf.c
143  x86_64/floatundidf.S
144  x86_64/floatundisf.S
145  x86_64/floatundixf.S
146  ${GENERIC_SOURCES})
147
148set(i386_SOURCES
149  i386/ashldi3.S
150  i386/ashrdi3.S
151  i386/divdi3.S
152  i386/floatdidf.S
153  i386/floatdisf.S
154  i386/floatdixf.S
155  i386/floatundidf.S
156  i386/floatundisf.S
157  i386/floatundixf.S
158  i386/lshrdi3.S
159  i386/moddi3.S
160  i386/muldi3.S
161  i386/udivdi3.S
162  i386/umoddi3.S
163  ${GENERIC_SOURCES})
164
165set(arm_SOURCES
166  arm/adddf3vfp.S
167  arm/addsf3vfp.S
168  arm/aeabi_dcmp.S
169  arm/aeabi_fcmp.S
170  arm/aeabi_idivmod.S
171  arm/aeabi_ldivmod.S
172  arm/aeabi_memcmp.S
173  arm/aeabi_memcpy.S
174  arm/aeabi_memmove.S
175  arm/aeabi_memset.S
176  arm/aeabi_uidivmod.S
177  arm/aeabi_uldivmod.S
178  arm/bswapdi2.S
179  arm/bswapsi2.S
180  arm/comparesf2.S
181  arm/divdf3vfp.S
182  arm/divmodsi4.S
183  arm/divsf3vfp.S
184  arm/divsi3.S
185  arm/eqdf2vfp.S
186  arm/eqsf2vfp.S
187  arm/extendsfdf2vfp.S
188  arm/fixdfsivfp.S
189  arm/fixsfsivfp.S
190  arm/fixunsdfsivfp.S
191  arm/fixunssfsivfp.S
192  arm/floatsidfvfp.S
193  arm/floatsisfvfp.S
194  arm/floatunssidfvfp.S
195  arm/floatunssisfvfp.S
196  arm/gedf2vfp.S
197  arm/gesf2vfp.S
198  arm/gtdf2vfp.S
199  arm/gtsf2vfp.S
200  arm/ledf2vfp.S
201  arm/lesf2vfp.S
202  arm/ltdf2vfp.S
203  arm/ltsf2vfp.S
204  arm/modsi3.S
205  arm/muldf3vfp.S
206  arm/mulsf3vfp.S
207  arm/nedf2vfp.S
208  arm/negdf2vfp.S
209  arm/negsf2vfp.S
210  arm/nesf2vfp.S
211  arm/restore_vfp_d8_d15_regs.S
212  arm/save_vfp_d8_d15_regs.S
213  arm/subdf3vfp.S
214  arm/subsf3vfp.S
215  arm/switch16.S
216  arm/switch32.S
217  arm/switch8.S
218  arm/switchu8.S
219  arm/sync_fetch_and_add_4.S
220  arm/sync_fetch_and_add_8.S
221  arm/sync_fetch_and_and_4.S
222  arm/sync_fetch_and_and_8.S
223  arm/sync_fetch_and_max_4.S
224  arm/sync_fetch_and_max_8.S
225  arm/sync_fetch_and_min_4.S
226  arm/sync_fetch_and_min_8.S
227  arm/sync_fetch_and_nand_4.S
228  arm/sync_fetch_and_nand_8.S
229  arm/sync_fetch_and_or_4.S
230  arm/sync_fetch_and_or_8.S
231  arm/sync_fetch_and_sub_4.S
232  arm/sync_fetch_and_sub_8.S
233  arm/sync_fetch_and_umax_4.S
234  arm/sync_fetch_and_umax_8.S
235  arm/sync_fetch_and_umin_4.S
236  arm/sync_fetch_and_umin_8.S
237  arm/sync_fetch_and_xor_4.S
238  arm/sync_fetch_and_xor_8.S
239  arm/sync_synchronize.S
240  arm/truncdfsf2vfp.S
241  arm/udivmodsi4.S
242  arm/udivsi3.S
243  arm/umodsi3.S
244  arm/unorddf2vfp.S
245  arm/unordsf2vfp.S
246  ${GENERIC_SOURCES})
247
248add_custom_target(builtins)
249
250if (NOT WIN32)
251  foreach(arch x86_64 i386 arm)
252    if(CAN_TARGET_${arch})
253      add_compiler_rt_runtime(clang_rt.builtins-${arch} ${arch} STATIC
254        SOURCES ${${arch}_SOURCES}
255        CFLAGS "-std=c99")
256      add_dependencies(builtins clang_rt.builtins-${arch})
257    endif()
258  endforeach()
259endif()
260
261add_dependencies(compiler-rt builtins)
262