Android.mk revision 4b4f557b295efe886cb7b4199f136afa9c6db6e8
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Copyright (C) 2012 The Android Open Source Project
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Licensed under the Apache License, Version 2.0 (the "License");
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# you may not use this file except in compliance with the License.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# You may obtain a copy of the License at
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#      http://www.apache.org/licenses/LICENSE-2.0
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Unless required by applicable law or agreed to in writing, software
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)# distributed under the License is distributed on an "AS IS" BASIS,
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# See the License for the specific language governing permissions and
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# limitations under the License.
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LOCAL_PATH := $(call my-dir)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The following list contains platform-independent functionalities.
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Skip apple_versioning.c since it is unused.
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Skip atomic.c since it needs to be built separately according to the docs.
247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch# Skip clear_cache.c since it redefines a system function on Android.
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Skip gcc_personality_v0.c since it depends on libunwind.
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)libcompiler_rt_common_SRC_FILES := \
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/absvdi2.c \
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/absvsi2.c \
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/absvti2.c \
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/adddf3.c \
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/addsf3.c \
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/addvdi3.c \
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/addvsi3.c \
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/addvti3.c \
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/ashldi3.c \
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/ashlti3.c \
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/ashrdi3.c \
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/ashrti3.c \
39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  lib/clzdi2.c \
40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  lib/clzsi2.c \
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/clzti2.c \
42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  lib/cmpdi2.c \
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/cmpti2.c \
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/comparedf2.c \
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/comparesf2.c \
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/ctzdi2.c \
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/ctzsi2.c \
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/ctzti2.c \
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/divdc3.c \
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/divdf3.c \
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/divdi3.c \
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/divmoddi4.c \
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/divmodsi4.c \
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/divsc3.c \
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/divsf3.c \
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/divsi3.c \
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/divti3.c \
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/divxc3.c \
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/enable_execute_stack.c \
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/eprintf.c \
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/extendsfdf2.c \
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/ffsdi2.c \
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/ffsti2.c \
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/fixdfdi.c \
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/fixdfsi.c \
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/fixdfti.c \
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/fixsfdi.c \
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/fixsfsi.c \
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/fixsfti.c \
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/fixunsdfdi.c \
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/fixunsdfsi.c \
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/fixunsdfti.c \
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/fixunssfdi.c \
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/fixunssfsi.c \
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/fixunssfti.c \
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/fixunsxfdi.c \
7790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  lib/fixunsxfsi.c \
7890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  lib/fixunsxfti.c \
79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  lib/fixxfdi.c \
80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  lib/fixxfti.c \
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/floatdidf.c \
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/floatdisf.c \
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/floatdixf.c \
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/floatsidf.c \
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/floatsisf.c \
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/floattidf.c \
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/floattisf.c \
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/floattixf.c \
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/floatundidf.c \
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/floatundisf.c \
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/floatundixf.c \
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/floatunsidf.c \
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/floatunsisf.c \
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/floatuntidf.c \
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/floatuntisf.c \
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/floatuntixf.c \
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/int_util.c \
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/lshrdi3.c \
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/lshrti3.c \
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/moddi3.c \
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/modsi3.c \
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/modti3.c \
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/muldc3.c \
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/muldf3.c \
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/muldi3.c \
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/mulodi4.c \
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/mulosi4.c \
108868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  lib/muloti4.c \
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/mulsc3.c \
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/mulsf3.c \
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/multi3.c \
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/mulvdi3.c \
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/mulvsi3.c \
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/mulvti3.c \
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/mulxc3.c \
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/negdf2.c \
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/negdi2.c \
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/negsf2.c \
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/negti2.c \
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/negvdi2.c \
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/negvsi2.c \
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/negvti2.c \
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/paritydi2.c \
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/paritysi2.c \
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/parityti2.c \
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/popcountdi2.c \
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/popcountsi2.c \
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/popcountti2.c \
129868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  lib/powidf2.c \
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/powisf2.c \
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/powitf2.c \
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/powixf2.c \
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/subdf3.c \
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/subsf3.c \
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/subvdi3.c \
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/subvsi3.c \
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/subvti3.c \
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/trampoline_setup.c \
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/truncdfsf2.c \
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/ucmpdi2.c \
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/ucmpti2.c \
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/udivdi3.c \
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/udivmoddi4.c \
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/udivmodsi4.c \
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/udivmodti4.c \
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/udivsi3.c \
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/udivti3.c \
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/umoddi3.c \
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/umodsi3.c \
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/umodti3.c
151868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ARM-specific runtimes
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)libcompiler_rt_arm_SRC_FILES := \
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/arm/aeabi_dcmp.S \
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/arm/aeabi_fcmp.S \
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/arm/aeabi_idivmod.S \
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/arm/aeabi_ldivmod.S \
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/arm/aeabi_memcmp.S \
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/arm/aeabi_memcpy.S \
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/arm/aeabi_memmove.S \
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/arm/aeabi_memset.S \
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/arm/aeabi_uidivmod.S \
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/arm/aeabi_uldivmod.S \
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/arm/comparesf2.S \
165ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  lib/arm/divmodsi4.S \
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/arm/divsi3.S \
167ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  lib/arm/modsi3.S \
168ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  lib/arm/udivmodsi4.S \
169ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  lib/arm/udivsi3.S \
170ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  lib/arm/umodsi3.S
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ARM64-specific runtimes
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)libcompiler_rt_arm64_SRC_FILES :=
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# MIPS-specific runtimes
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)libcompiler_rt_mips_SRC_FILES := # nothing to add
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# X86-specific runtimes
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)libcompiler_rt_x86_SRC_FILES := \
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/i386/ashldi3.S \
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/i386/ashrdi3.S \
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/i386/divdi3.S \
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/i386/floatdidf.S \
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/i386/floatdisf.S \
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/i386/floatdixf.S \
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/i386/floatundidf.S \
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/i386/floatundisf.S \
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/i386/floatundixf.S \
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/i386/lshrdi3.S \
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/i386/moddi3.S \
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/i386/muldi3.S \
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/i386/udivdi3.S \
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/i386/umoddi3.S
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# X86_64-specific runtimes
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)libcompiler_rt_x86_64_SRC_FILES := \
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/x86_64/floatundixf.S \
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/x86_64/floatdisf.c \
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/x86_64/floatdidf.c \
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/x86_64/floatdixf.c \
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/x86_64/floatundisf.S \
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/x86_64/floatundidf.S
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The following list contains functions that are not available in libgcc.a, so
205868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)# we potentially need them when using a Clang-built component (e.g., -ftrapv
206868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)# with 64-bit integer multiplies. See http://llvm.org/bugs/show_bug.cgi?id=14469.)
207868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)libcompiler_rt_extras_SRC_FILES := \
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lib/mulodi4.c
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $(1): arch
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)define get-libcompiler-rt-source-files
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $(if $(findstring $(1),arm),$(call get-libcompiler-rt-arm-source-files),
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $(if $(findstring $(1),mips),$(call get-libcompiler-rt-mips-source-files),
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          $(if $(findstring $(1),x86),$(call get-libcompiler-rt-x86-source-files),
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             $(if $(findstring $(1),x86_64),$(call get-libcompiler-rt-x86_64-source-files),
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 $(if $(findstring $(1),x32),$(call get-libcompiler-rt-x86-source-files),
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    $(if $(findstring $(1),arm64),$(call get-libcompiler-rt-arm64-source-files),
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $(error Unsupported ARCH $(1))))))))
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)endef
22090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $(1): source list
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $(2): arch
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# If lib/<arch>/X.[cS] is included in the source list, we should filter out lib/X.c
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# in the result source list (i.e., use the one optimized for the arch.) Otherwise
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# there'll be multiple definitions for one symbol.
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)define filter-libcompiler-rt-common-source-files
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $(filter-out $(patsubst lib/$(strip $(2))/%.S,lib/%.c,\
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          $(filter lib/$(strip $(2))/%.S,$(1))) \
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               $(patsubst lib/$(strip $(2))/%.c,lib/%.c,\
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          $(filter lib/$(strip $(2))/%.c,$(1))),$(1))
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)endef
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)define get-libcompiler-rt-arm-common-source-files
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $(call filter-libcompiler-rt-common-source-files,
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $(libcompiler_rt_common_SRC_FILES) \
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $(libcompiler_rt_arm_SRC_FILES), arm)
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)endef
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $(1): common runtime list
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Add ARM runtimes implemented in VFP
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)define add-libcompiler-rt-arm-vfp-source-files
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $(filter-out $(addprefix lib/,adddf3.c addsf3.c comparedf2.c comparesf2.c         \
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                arm/comparesf2.S divdf3.c divsf3.c extendsfdf2.c    \
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                fixdfsi.c fixsfsi.c fixunsdfsi.c fixunssfsi.c       \
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                floatsidf.c floatsisf.c floatunsidf.c floatunsisf.c \
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                muldf3.c mulsf3.c negdf2.c negsf2.c subdf3.c        \
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                subsf3.c truncdfsf2.c),$(1)) lib/arm/vfp_alias.S
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)endef
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)define get-libcompiler-rt-arm-source-files
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $(if $(findstring $(ARCH_ARM_HAVE_VFP),true),
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $(call add-libcompiler-rt-arm-vfp-source-files,
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          $(call get-libcompiler-rt-arm-common-source-files)),
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $(call get-libcompiler-rt-arm-common-source-files))
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)endef
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)define get-libcompiler-rt-arm64-source-files
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $(call filter-libcompiler-rt-common-source-files,
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $(libcompiler_rt_common_SRC_FILES) \
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $(libcompiler_rt_arm64_SRC_FILES),arm64)
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)endef
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)define get-libcompiler-rt-mips-source-files
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $(call filter-libcompiler-rt-common-source-files,
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $(libcompiler_rt_common_SRC_FILES) \
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $(libcompiler_rt_mips_SRC_FILES),mips)
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)endef
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)define get-libcompiler-rt-x86-source-files
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $(call filter-libcompiler-rt-common-source-files,
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $(libcompiler_rt_common_SRC_FILES) \
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $(libcompiler_rt_x86_SRC_FILES),i386)
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)endef
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)define get-libcompiler-rt-x86_64-source-files
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $(call filter-libcompiler-rt-common-source-files,
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $(libcompiler_rt_common_SRC_FILES) \
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $(libcompiler_rt_x86_64_SRC_FILES),x86_64)
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)endef
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Don't build compiler-rt without clang
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ifneq ($(WITHOUT_TARGET_CLANG), true)
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#=====================================================================
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Device Static Library: libcompiler_rt-extras
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#=====================================================================
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)include $(CLEAR_VARS)
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LOCAL_MODULE := libcompiler_rt-extras
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LOCAL_MODULE_TAGS := optional
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LOCAL_MODULE_CLASS := STATIC_LIBRARIES
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LOCAL_CLANG := true
296c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)LOCAL_SRC_FILES := $(libcompiler_rt_extras_SRC_FILES)
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)include $(BUILD_STATIC_LIBRARY)
300c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#=====================================================================
302c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch# Device Static Library: libcompiler_rt
303c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#=====================================================================
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)include $(CLEAR_VARS)
306eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
307eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochifeq ($(TARGET_ARCH),mips64)
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$(warning TODOMips64: Enable compiler-rt build)
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)endif
310eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LOCAL_MODULE := libcompiler_rt
312eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochLOCAL_CFLAGS_arm += -D__ARM_EABI__
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LOCAL_ASFLAGS := -integrated-as
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LOCAL_CLANG := true
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LOCAL_SRC_FILES_arm := $(call get-libcompiler-rt-source-files,arm)
316c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)LOCAL_SRC_FILES_arm64 := $(call get-libcompiler-rt-source-files,arm64)
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LOCAL_SRC_FILES_mips := $(call get-libcompiler-rt-source-files,mips)
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LOCAL_SRC_FILES_x86 := $(call get-libcompiler-rt-source-files,x86)
319c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)LOCAL_SRC_FILES_x86_64 := $(call get-libcompiler-rt-source-files,x86_64)
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LOCAL_MODULE_TARGET_ARCH := arm arm64 mips x86 x86_64
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)include $(BUILD_STATIC_LIBRARY)
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#=====================================================================
326868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)# Device Shared Library: libcompiler_rt
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#=====================================================================
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
329c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)include $(CLEAR_VARS)
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LOCAL_MODULE := libcompiler_rt
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LOCAL_WHOLE_STATIC_LIBRARIES := libcompiler_rt
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LOCAL_MODULE_TARGET_ARCH := arm arm64 mips x86 x86_64
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
336c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)include $(BUILD_SHARED_LIBRARY)
337868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
338868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)# Build ASan
339c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)include $(LOCAL_PATH)/lib/asan/Android.mk
340868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
341c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)endif