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