Android.mk revision fba76918950962438ed40f78365947bf9927b24c
1dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov#
2dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov# Copyright (C) 2012 The Android Open Source Project
3dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov#
4dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov# Licensed under the Apache License, Version 2.0 (the "License");
5dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov# you may not use this file except in compliance with the License.
6dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov# You may obtain a copy of the License at
7dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov#
8dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov#      http://www.apache.org/licenses/LICENSE-2.0
9dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov#
10dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov# Unless required by applicable law or agreed to in writing, software
11dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov# distributed under the License is distributed on an "AS IS" BASIS,
12dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov# See the License for the specific language governing permissions and
14dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov# limitations under the License.
15dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov#
16dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov#
17dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov
18dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy StepanovLOCAL_PATH := $(call my-dir)
19139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
20139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# The following list contains platform-independent functionalities.
21139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao#
22cec0726037ef2716d4d131ae22764d00a4570bb7Shih-wei Liao# Skip apple_versioning.c since it is unused.
23139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# Skip atomic.c since it needs to be built separately according to the docs.
24139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# Skip clear_cache.c since it redefines a system function on Android.
254d40231aa139331cbc0806bb1ff7475cd1dc9f04Shih-wei Liao# Skip gcc_personality_v0.c since it depends on libunwind.
26139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaolibcompiler_rt_common_SRC_FILES := \
27139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/absvdi2.c \
28139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/absvsi2.c \
29139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/absvti2.c \
30139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/adddf3.c \
31139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/addsf3.c \
32139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/addvdi3.c \
33139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/addvsi3.c \
34139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/addvti3.c \
35139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/ashldi3.c \
36139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/ashlti3.c \
37139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/ashrdi3.c \
38139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/ashrti3.c \
39139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/clzdi2.c \
40139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/clzsi2.c \
41139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/clzti2.c \
42139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/cmpdi2.c \
43139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/cmpti2.c \
44139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/comparedf2.c \
45139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/comparesf2.c \
46139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/ctzdi2.c \
47139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/ctzsi2.c \
48139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/ctzti2.c \
49139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/divdc3.c \
50139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/divdf3.c \
51139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/divdi3.c \
52139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/divmoddi4.c \
53139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/divmodsi4.c \
54139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/divsc3.c \
55139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/divsf3.c \
56139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/divsi3.c \
57139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/divti3.c \
58139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/divxc3.c \
59139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/enable_execute_stack.c \
60139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/eprintf.c \
61139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/extendsfdf2.c \
62139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/ffsdi2.c \
63139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/ffsti2.c \
64139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/fixdfdi.c \
65139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/fixdfsi.c \
66139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/fixdfti.c \
67139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/fixsfdi.c \
68139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/fixsfsi.c \
69139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/fixsfti.c \
70139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/fixunsdfdi.c \
71139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/fixunsdfsi.c \
72139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/fixunsdfti.c \
73139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/fixunssfdi.c \
74139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/fixunssfsi.c \
75139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/fixunssfti.c \
76139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/fixunsxfdi.c \
77139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/fixunsxfsi.c \
78139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/fixunsxfti.c \
79139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/fixxfdi.c \
80139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/fixxfti.c \
81139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/floatdidf.c \
82139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/floatdisf.c \
83139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/floatdixf.c \
84139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/floatsidf.c \
85139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/floatsisf.c \
86139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/floattidf.c \
87139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/floattisf.c \
88139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/floattixf.c \
89139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/floatundidf.c \
90139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/floatundisf.c \
91139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/floatundixf.c \
92139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/floatunsidf.c \
93139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/floatunsisf.c \
94139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/floatuntidf.c \
95139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/floatuntisf.c \
96139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/floatuntixf.c \
97139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/int_util.c \
98139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/lshrdi3.c \
99139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/lshrti3.c \
100139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/moddi3.c \
101139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/modsi3.c \
102139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/modti3.c \
103139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/muldc3.c \
104139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/muldf3.c \
105139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/muldi3.c \
106f5c93a0432511de0b74053fea6a0c0108f32398cShih-wei Liao  lib/mulodi4.c \
107139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/mulosi4.c \
108139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/muloti4.c \
109139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/mulsc3.c \
110139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/mulsf3.c \
111139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/multi3.c \
112139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/mulvdi3.c \
113139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/mulvsi3.c \
114139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/mulvti3.c \
115139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/mulxc3.c \
116139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/negdf2.c \
117139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/negdi2.c \
118139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/negsf2.c \
119139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/negti2.c \
120139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/negvdi2.c \
121139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/negvsi2.c \
122139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/negvti2.c \
123139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/paritydi2.c \
124139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/paritysi2.c \
125139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/parityti2.c \
126139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/popcountdi2.c \
127139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/popcountsi2.c \
128139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/popcountti2.c \
129139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/powidf2.c \
130139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/powisf2.c \
131139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/powitf2.c \
132139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/powixf2.c \
133139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/subdf3.c \
134139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/subsf3.c \
135139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/subvdi3.c \
136139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/subvsi3.c \
137139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/subvti3.c \
138139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/trampoline_setup.c \
139139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/truncdfsf2.c \
140139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/ucmpdi2.c \
141139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/ucmpti2.c \
142139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/udivdi3.c \
143139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/udivmoddi4.c \
144139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/udivmodsi4.c \
145139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/udivmodti4.c \
146139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/udivsi3.c \
147139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/udivti3.c \
148139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/umoddi3.c \
149139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/umodsi3.c \
150139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/umodti3.c
151139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
152139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# ARM-specific runtimes
153139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaolibcompiler_rt_arm_SRC_FILES := \
154fe42f08172fc95bf182c63cb16f85a1ff29793e8Shih-wei Liao  lib/arm/aeabi_idivmod.S \
155fe42f08172fc95bf182c63cb16f85a1ff29793e8Shih-wei Liao  lib/arm/aeabi_ldivmod.S \
156fe42f08172fc95bf182c63cb16f85a1ff29793e8Shih-wei Liao  lib/arm/aeabi_memcmp.S \
157fe42f08172fc95bf182c63cb16f85a1ff29793e8Shih-wei Liao  lib/arm/aeabi_memcpy.S \
158fe42f08172fc95bf182c63cb16f85a1ff29793e8Shih-wei Liao  lib/arm/aeabi_memmove.S \
159fe42f08172fc95bf182c63cb16f85a1ff29793e8Shih-wei Liao  lib/arm/aeabi_memset.S \
160fe42f08172fc95bf182c63cb16f85a1ff29793e8Shih-wei Liao  lib/arm/aeabi_uidivmod.S \
161c940ebf2b1fa793a290cdddc58a11bf046e7c169Shih-wei Liao  lib/arm/aeabi_uldivmod.S
162c940ebf2b1fa793a290cdddc58a11bf046e7c169Shih-wei Liao
163c940ebf2b1fa793a290cdddc58a11bf046e7c169Shih-wei Liao# ARM-specific runtimes implemented in VFP
164c940ebf2b1fa793a290cdddc58a11bf046e7c169Shih-wei Liaolibcompiler_rt_arm_vfp_SRC_FILES := \
165139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/adddf3vfp.S \
166139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/addsf3vfp.S \
1676fd582c993c8153daa34b4510c920db2c1c1c52eShih-wei Liao  lib/arm/comparesf2.S \
168139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/divdf3vfp.S \
1696fd582c993c8153daa34b4510c920db2c1c1c52eShih-wei Liao  lib/arm/divmodsi4.S \
170139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/divsf3vfp.S \
1716fd582c993c8153daa34b4510c920db2c1c1c52eShih-wei Liao  lib/arm/divsi3.S \
172139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/eqdf2vfp.S \
173139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/eqsf2vfp.S \
174139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/extendsfdf2vfp.S \
175139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/fixdfsivfp.S \
176139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/fixsfsivfp.S \
177139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/fixunsdfsivfp.S \
178139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/fixunssfsivfp.S \
179139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/floatsidfvfp.S \
180139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/floatsisfvfp.S \
181139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/floatunssidfvfp.S \
182139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/floatunssisfvfp.S \
183139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/gedf2vfp.S \
184139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/gesf2vfp.S \
185139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/gtdf2vfp.S \
186139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/gtsf2vfp.S \
187139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/ledf2vfp.S \
188139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/lesf2vfp.S \
189139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/ltdf2vfp.S \
190139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/ltsf2vfp.S \
1916fd582c993c8153daa34b4510c920db2c1c1c52eShih-wei Liao  lib/arm/modsi3.S \
192139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/muldf3vfp.S \
193139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/mulsf3vfp.S \
194139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/nedf2vfp.S \
195139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/negdf2vfp.S \
196139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/negsf2vfp.S \
197139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/nesf2vfp.S \
198139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/subdf3vfp.S \
199139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/subsf3vfp.S \
200139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/truncdfsf2vfp.S \
2016fd582c993c8153daa34b4510c920db2c1c1c52eShih-wei Liao  lib/arm/udivmodsi4.S \
2026fd582c993c8153daa34b4510c920db2c1c1c52eShih-wei Liao  lib/arm/udivsi3.S \
2036fd582c993c8153daa34b4510c920db2c1c1c52eShih-wei Liao  lib/arm/umodsi3.S \
204139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/arm/unorddf2vfp.S \
205fe42f08172fc95bf182c63cb16f85a1ff29793e8Shih-wei Liao  lib/arm/unordsf2vfp.S
206139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
207139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# MIPS-specific runtimes
208139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaolibcompiler_rt_mips_SRC_FILES := # nothing to add
209139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
210139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# X86-specific runtimes
211139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao#
212139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# We don't support x86-64 right now
213139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaolibcompiler_rt_x86_SRC_FILES := \
214139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/i386/ashldi3.S \
215139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/i386/ashrdi3.S \
216139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/i386/divdi3.S \
217139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/i386/floatdidf.S \
218139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/i386/floatdisf.S \
219139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/i386/floatdixf.S \
220139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/i386/floatundidf.S \
221139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/i386/floatundisf.S \
222139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/i386/floatundixf.S \
223139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/i386/lshrdi3.S \
224139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/i386/moddi3.S \
225139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/i386/muldi3.S \
226139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/i386/udivdi3.S \
227139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/i386/umoddi3.S
228139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
229139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# The following list contains functions that are not available in libgcc.a, so
230139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# we potentially need them when using a Clang-built component (e.g., -ftrapv
231139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# with 64-bit integer multiplies. See http://llvm.org/bugs/show_bug.cgi?id=14469.)
232139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaolibcompiler_rt_extras_SRC_FILES := \
233139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  lib/mulodi4.c
234139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
235139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# $(1): arch
236139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaodefine get-libcompiler-rt-source-files
237139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  $(if $(findstring $(1),arm),$(call get-libcompiler-rt-arm-source-files),
238139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao      $(if $(findstring $(1),mips),$(call get-libcompiler-rt-mips-source-files),
239139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao          $(if $(findstring $(1),x86),$(call get-libcompiler-rt-x86-source-files),
240139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  $(error Unsupported ARCH $(1)))))
241139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaoendef
242139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
243139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# $(1): source list
244139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# $(2): arch
245139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao#
246139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# If lib/<arch>/X.S is included in the source list, we should filter out lib/X.c
247139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# in the result source list (i.e., use the one optimized for the arch.) Otherwise
248139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# there'll be multiple definitions for one symbol.
249139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaodefine filter-libcompiler-rt-common-source-files
250139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  $(filter-out $(patsubst lib/$(2)/%.S,lib/%.c,$(filter %.S,$(1))),$(1))
251139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaoendef
252139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
253139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaodefine get-libcompiler-rt-arm-source-files
254139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  $(call filter-libcompiler-rt-common-source-files,
255139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao      $(libcompiler_rt_common_SRC_FILES)
256c940ebf2b1fa793a290cdddc58a11bf046e7c169Shih-wei Liao      $(libcompiler_rt_arm_SRC_FILES)
257c940ebf2b1fa793a290cdddc58a11bf046e7c169Shih-wei Liao      $(if $(findstring $(ARCH_ARM_HAVE_VFP),true),$(libcompiler_rt_arm_vfp_SRC_FILES),),arm)
258139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaoendef
259139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
260139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaodefine get-libcompiler-rt-mips-source-files
261139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  $(call filter-libcompiler-rt-common-source-files,
262139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao      $(libcompiler_rt_common_SRC_FILES)
263139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao      $(libcompiler_rt_mips_SRC_FILES),mips)
264139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaoendef
265139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
266139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaodefine get-libcompiler-rt-x86-source-files
267139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  $(call filter-libcompiler-rt-common-source-files,
268139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao      $(libcompiler_rt_common_SRC_FILES)
269139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao      $(libcompiler_rt_x86_SRC_FILES),i386)
270139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaoendef
271139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
272139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# $(1): target or host
273139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# $(2): static or shared
274139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaodefine build-libcompiler-rt
275139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  ifneq ($(1),target)
276139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao    ifneq ($(1),host)
277139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao      $$(error expected target or host for argument 1, received $(1))
278139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao    endif
279139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  endif
280139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  ifneq ($(2),static)
281139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao    ifneq ($(2),shared)
282139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao      $$(error expected static or shared for argument 2, received $(2))
283139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao    endif
284139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  endif
285139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
286139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  target_or_host := $(1)
287139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  static_or_shared := $(2)
288139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
289139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  arch :=
290139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  ifeq ($$(target_or_host),target)
291139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao    arch := $(TARGET_ARCH)
292139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  else
293139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao    arch := $(HOST_ARCH)
294139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  endif
295139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
296139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  include $(CLEAR_VARS)
297139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
2987f489a3deb01ecca5038d02b71111bac313ee57fShih-wei Liao  LOCAL_MODULE := libcompiler_rt
299139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  LOCAL_MODULE_TAGS := optional
300139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
301139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  ifeq ($$(static_or_shared),static)
302139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao    LOCAL_MODULE_CLASS := STATIC_LIBRARIES
303139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  else
304139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao    LOCAL_MODULE_CLASS := SHARED_LIBRARIES
305139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  endif
306139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
307139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  # TODO: Fix -integrated-as
308139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  # LOCAL_CFLAGS := -integrated-as
309139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
310139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  # Add -D__ARM_EABI__ for ARM
311139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  ifeq ($$(arch),arm)
312139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao    LOCAL_CFLAGS += -D__ARM_EABI__
313139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  endif
314139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
3157f489a3deb01ecca5038d02b71111bac313ee57fShih-wei Liao  # Use Clang to compile libcompiler_rt
316139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  LOCAL_CLANG := true
317139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  LOCAL_SRC_FILES := $$(call get-libcompiler-rt-source-files,$$(arch))
318139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
319139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao
320139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  ifeq ($$(target_or_host),target)
321139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao    ifeq ($$(static_or_shared),static)
322139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao      include $(BUILD_STATIC_LIBRARY)
323139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao    else
324139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao      include $(BUILD_SHARED_LIBRARY)
325139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao    endif
326139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  else
327139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao    LOCAL_IS_HOST_MODULE := true
328139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao    ifeq ($$(static_or_shared),static)
329139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao      include $(BUILD_HOST_STATIC_LIBRARY)
330139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao    else
331139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao      include $(BUILD_HOST_SHARED_LIBRARY)
332139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao    endif
333139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao  endif
334139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaoendef
335dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov
336dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov#=====================================================================
3377f489a3deb01ecca5038d02b71111bac313ee57fShih-wei Liao# Device Static Library: libcompiler_rt-extras
338dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov#=====================================================================
339dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov
340dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanovinclude $(CLEAR_VARS)
341dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov
3427f489a3deb01ecca5038d02b71111bac313ee57fShih-wei LiaoLOCAL_MODULE := libcompiler_rt-extras
343dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy StepanovLOCAL_MODULE_TAGS := optional
344dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy StepanovLOCAL_MODULE_CLASS := STATIC_LIBRARIES
345dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy StepanovLOCAL_CLANG := true
346139a106d12a5789561b3244bb34704eb618e4ffeShih-wei LiaoLOCAL_SRC_FILES := $(libcompiler_rt_extras_SRC_FILES)
34797ac43c7cf39e8ad2719b4f395093e7415280577Stephen HinesLOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
348dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov
349dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanovinclude $(BUILD_STATIC_LIBRARY)
350dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov
351139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao#=====================================================================
3527f489a3deb01ecca5038d02b71111bac313ee57fShih-wei Liao# Device Static Library: libcompiler_rt
353139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao#=====================================================================
354139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao$(eval $(call build-libcompiler-rt,target,static))
355dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov
356fba76918950962438ed40f78365947bf9927b24cShih-wei Liao#=====================================================================
357fba76918950962438ed40f78365947bf9927b24cShih-wei Liao# Device Shared Library: libcompiler_rt
358fba76918950962438ed40f78365947bf9927b24cShih-wei Liao#=====================================================================
359fba76918950962438ed40f78365947bf9927b24cShih-wei Liao$(eval $(call build-libcompiler-rt,target,shared))
360fba76918950962438ed40f78365947bf9927b24cShih-wei Liao
361139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# Build ASan
362139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaoinclude $(LOCAL_PATH)/lib/asan/Android.mk
363