Android.mk revision 139a106d12a5789561b3244bb34704eb618e4ffe
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# 22139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# Skip atomic.c since it needs to be built separately according to the docs. 23139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# Skip clear_cache.c since it redefines a system function on Android. 24139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaolibcompiler_rt_common_SRC_FILES := \ 25139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/absvdi2.c \ 26139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/absvsi2.c \ 27139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/absvti2.c \ 28139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/adddf3.c \ 29139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/addsf3.c \ 30139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/addvdi3.c \ 31139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/addvsi3.c \ 32139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/addvti3.c \ 33139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/apple_versioning.c \ 34139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/ashldi3.c \ 35139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/ashlti3.c \ 36139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/ashrdi3.c \ 37139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/ashrti3.c \ 38139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/clzdi2.c \ 39139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/clzsi2.c \ 40139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/clzti2.c \ 41139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/cmpdi2.c \ 42139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/cmpti2.c \ 43139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/comparedf2.c \ 44139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/comparesf2.c \ 45139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/ctzdi2.c \ 46139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/ctzsi2.c \ 47139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/ctzti2.c \ 48139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/divdc3.c \ 49139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/divdf3.c \ 50139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/divdi3.c \ 51139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/divmoddi4.c \ 52139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/divmodsi4.c \ 53139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/divsc3.c \ 54139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/divsf3.c \ 55139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/divsi3.c \ 56139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/divti3.c \ 57139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/divxc3.c \ 58139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/enable_execute_stack.c \ 59139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/eprintf.c \ 60139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/extendsfdf2.c \ 61139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/ffsdi2.c \ 62139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/ffsti2.c \ 63139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/fixdfdi.c \ 64139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/fixdfsi.c \ 65139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/fixdfti.c \ 66139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/fixsfdi.c \ 67139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/fixsfsi.c \ 68139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/fixsfti.c \ 69139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/fixunsdfdi.c \ 70139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/fixunsdfsi.c \ 71139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/fixunsdfti.c \ 72139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/fixunssfdi.c \ 73139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/fixunssfsi.c \ 74139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/fixunssfti.c \ 75139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/fixunsxfdi.c \ 76139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/fixunsxfsi.c \ 77139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/fixunsxfti.c \ 78139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/fixxfdi.c \ 79139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/fixxfti.c \ 80139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/floatdidf.c \ 81139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/floatdisf.c \ 82139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/floatdixf.c \ 83139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/floatsidf.c \ 84139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/floatsisf.c \ 85139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/floattidf.c \ 86139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/floattisf.c \ 87139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/floattixf.c \ 88139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/floatundidf.c \ 89139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/floatundisf.c \ 90139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/floatundixf.c \ 91139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/floatunsidf.c \ 92139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/floatunsisf.c \ 93139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/floatuntidf.c \ 94139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/floatuntisf.c \ 95139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/floatuntixf.c \ 96139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/gcc_personality_v0.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 \ 106139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/mulosi4.c \ 107139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/muloti4.c \ 108139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/mulsc3.c \ 109139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/mulsf3.c \ 110139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/multi3.c \ 111139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/mulvdi3.c \ 112139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/mulvsi3.c \ 113139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/mulvti3.c \ 114139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/mulxc3.c \ 115139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/negdf2.c \ 116139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/negdi2.c \ 117139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/negsf2.c \ 118139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/negti2.c \ 119139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/negvdi2.c \ 120139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/negvsi2.c \ 121139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/negvti2.c \ 122139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/paritydi2.c \ 123139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/paritysi2.c \ 124139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/parityti2.c \ 125139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/popcountdi2.c \ 126139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/popcountsi2.c \ 127139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/popcountti2.c \ 128139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/powidf2.c \ 129139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/powisf2.c \ 130139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/powitf2.c \ 131139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/powixf2.c \ 132139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/subdf3.c \ 133139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/subsf3.c \ 134139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/subvdi3.c \ 135139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/subvsi3.c \ 136139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/subvti3.c \ 137139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/trampoline_setup.c \ 138139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/truncdfsf2.c \ 139139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/ucmpdi2.c \ 140139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/ucmpti2.c \ 141139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/udivdi3.c \ 142139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/udivmoddi4.c \ 143139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/udivmodsi4.c \ 144139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/udivmodti4.c \ 145139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/udivsi3.c \ 146139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/udivti3.c \ 147139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/umoddi3.c \ 148139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/umodsi3.c \ 149139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/umodti3.c 150139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 151139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# ARM-specific runtimes 152139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaolibcompiler_rt_arm_SRC_FILES := \ 153139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/adddf3vfp.S \ 154139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/addsf3vfp.S \ 155139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/divdf3vfp.S \ 156139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/divsf3vfp.S \ 157139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/eqdf2vfp.S \ 158139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/eqsf2vfp.S \ 159139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/extendsfdf2vfp.S \ 160139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/fixdfsivfp.S \ 161139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/fixsfsivfp.S \ 162139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/fixunsdfsivfp.S \ 163139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/fixunssfsivfp.S \ 164139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/floatsidfvfp.S \ 165139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/floatsisfvfp.S \ 166139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/floatunssidfvfp.S \ 167139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/floatunssisfvfp.S \ 168139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/gedf2vfp.S \ 169139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/gesf2vfp.S \ 170139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/gtdf2vfp.S \ 171139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/gtsf2vfp.S \ 172139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/ledf2vfp.S \ 173139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/lesf2vfp.S \ 174139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/ltdf2vfp.S \ 175139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/ltsf2vfp.S \ 176139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/muldf3vfp.S \ 177139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/mulsf3vfp.S \ 178139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/nedf2vfp.S \ 179139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/negdf2vfp.S \ 180139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/negsf2vfp.S \ 181139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/nesf2vfp.S \ 182139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/subdf3vfp.S \ 183139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/subsf3vfp.S \ 184139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/truncdfsf2vfp.S \ 185139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/unorddf2vfp.S \ 186139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/unordsf2vfp.S \ 187139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/aeabi_ldivmod.S \ 188139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/arm/aeabi_uldivmod.S 189139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 190139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# MIPS-specific runtimes 191139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaolibcompiler_rt_mips_SRC_FILES := # nothing to add 192139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 193139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# X86-specific runtimes 194139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# 195139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# We don't support x86-64 right now 196139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaolibcompiler_rt_x86_SRC_FILES := \ 197139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/i386/ashldi3.S \ 198139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/i386/ashrdi3.S \ 199139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/i386/divdi3.S \ 200139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/i386/floatdidf.S \ 201139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/i386/floatdisf.S \ 202139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/i386/floatdixf.S \ 203139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/i386/floatundidf.S \ 204139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/i386/floatundisf.S \ 205139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/i386/floatundixf.S \ 206139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/i386/lshrdi3.S \ 207139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/i386/moddi3.S \ 208139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/i386/muldi3.S \ 209139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/i386/udivdi3.S \ 210139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/i386/umoddi3.S 211139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 212139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# The following list contains functions that are not available in libgcc.a, so 213139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# we potentially need them when using a Clang-built component (e.g., -ftrapv 214139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# with 64-bit integer multiplies. See http://llvm.org/bugs/show_bug.cgi?id=14469.) 215139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaolibcompiler_rt_extras_SRC_FILES := \ 216139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao lib/mulodi4.c 217139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 218139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# $(1): arch 219139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaodefine get-libcompiler-rt-source-files 220139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $(if $(findstring $(1),arm),$(call get-libcompiler-rt-arm-source-files), 221139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $(if $(findstring $(1),mips),$(call get-libcompiler-rt-mips-source-files), 222139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $(if $(findstring $(1),x86),$(call get-libcompiler-rt-x86-source-files), 223139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $(error Unsupported ARCH $(1))))) 224139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaoendef 225139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 226139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# $(1): source list 227139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# $(2): arch 228139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# 229139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# If lib/<arch>/X.S is included in the source list, we should filter out lib/X.c 230139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# in the result source list (i.e., use the one optimized for the arch.) Otherwise 231139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# there'll be multiple definitions for one symbol. 232139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaodefine filter-libcompiler-rt-common-source-files 233139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $(filter-out $(patsubst lib/$(2)/%.S,lib/%.c,$(filter %.S,$(1))),$(1)) 234139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaoendef 235139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 236139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaodefine get-libcompiler-rt-arm-source-files 237139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $(call filter-libcompiler-rt-common-source-files, 238139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $(libcompiler_rt_common_SRC_FILES) 239139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $(libcompiler_rt_extras_SRC_FILES) 240139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $(libcompiler_rt_arm_SRC_FILES),arm) 241139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaoendef 242139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 243139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaodefine get-libcompiler-rt-mips-source-files 244139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $(call filter-libcompiler-rt-common-source-files, 245139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $(libcompiler_rt_common_SRC_FILES) 246139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $(libcompiler_rt_extras_SRC_FILES) 247139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $(libcompiler_rt_mips_SRC_FILES),mips) 248139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaoendef 249139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 250139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaodefine get-libcompiler-rt-x86-source-files 251139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $(call filter-libcompiler-rt-common-source-files, 252139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $(libcompiler_rt_common_SRC_FILES) 253139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $(libcompiler_rt_extras_SRC_FILES) 254139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $(libcompiler_rt_x86_SRC_FILES),i386) 255139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaoendef 256139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 257139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# $(1): target or host 258139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# $(2): static or shared 259139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaodefine build-libcompiler-rt 260139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao ifneq ($(1),target) 261139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao ifneq ($(1),host) 262139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $$(error expected target or host for argument 1, received $(1)) 263139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao endif 264139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao endif 265139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao ifneq ($(2),static) 266139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao ifneq ($(2),shared) 267139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao $$(error expected static or shared for argument 2, received $(2)) 268139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao endif 269139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao endif 270139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 271139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao target_or_host := $(1) 272139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao static_or_shared := $(2) 273139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 274139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao arch := 275139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao ifeq ($$(target_or_host),target) 276139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao arch := $(TARGET_ARCH) 277139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao else 278139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao arch := $(HOST_ARCH) 279139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao endif 280139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 281139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao include $(CLEAR_VARS) 282139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 283139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao LOCAL_MODULE := libcompiler-rt 284139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao LOCAL_MODULE_TAGS := optional 285139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 286139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao ifeq ($$(static_or_shared),static) 287139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao LOCAL_MODULE_CLASS := STATIC_LIBRARIES 288139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao else 289139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao LOCAL_MODULE_CLASS := SHARED_LIBRARIES 290139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao endif 291139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 292139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao # TODO: Fix -integrated-as 293139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao # LOCAL_CFLAGS := -integrated-as 294139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 295139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao # Add -D__ARM_EABI__ for ARM 296139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao ifeq ($$(arch),arm) 297139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao LOCAL_CFLAGS += -D__ARM_EABI__ 298139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao endif 299139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 300139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao # Use Clang to compile libcompiler-rt 301139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao LOCAL_CLANG := true 302139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao LOCAL_SRC_FILES := $$(call get-libcompiler-rt-source-files,$$(arch)) 303139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 304139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao 305139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao ifeq ($$(target_or_host),target) 306139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao ifeq ($$(static_or_shared),static) 307139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao include $(BUILD_STATIC_LIBRARY) 308139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao else 309139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao include $(BUILD_SHARED_LIBRARY) 310139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao endif 311139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao else 312139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao LOCAL_IS_HOST_MODULE := true 313139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao ifeq ($$(static_or_shared),static) 314139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao include $(BUILD_HOST_STATIC_LIBRARY) 315139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao else 316139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao include $(BUILD_HOST_SHARED_LIBRARY) 317139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao endif 318139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao endif 319139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaoendef 320dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov 321dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov#===================================================================== 322139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# Device Static Library: libcompiler-rt-extras 323dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov#===================================================================== 324dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov 325dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanovinclude $(CLEAR_VARS) 326dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov 327139a106d12a5789561b3244bb34704eb618e4ffeShih-wei LiaoLOCAL_MODULE := libcompiler-rt-extras 328dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy StepanovLOCAL_MODULE_TAGS := optional 329dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy StepanovLOCAL_MODULE_CLASS := STATIC_LIBRARIES 330dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy StepanovLOCAL_CLANG := true 331139a106d12a5789561b3244bb34704eb618e4ffeShih-wei LiaoLOCAL_SRC_FILES := $(libcompiler_rt_extras_SRC_FILES) 33297ac43c7cf39e8ad2719b4f395093e7415280577Stephen HinesLOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 333dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov 334dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanovinclude $(BUILD_STATIC_LIBRARY) 335dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov 336139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao#===================================================================== 337139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# Device Static Library: libcompiler-rt 338139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao#===================================================================== 339139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao$(eval $(call build-libcompiler-rt,target,static)) 340dc3865b01cd56b703b77f58d5acff6529491eaf3Evgeniy Stepanov 341139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liao# Build ASan 342139a106d12a5789561b3244bb34704eb618e4ffeShih-wei Liaoinclude $(LOCAL_PATH)/lib/asan/Android.mk 343