1// 2// Copyright (C) 2012 The Android Open Source Project 3// 4// Licensed under the Apache License, Version 2.0 (the "License"); 5// you may not use this file except in compliance with the License. 6// You may obtain a copy of the License at 7// 8// http://www.apache.org/licenses/LICENSE-2.0 9// 10// Unless required by applicable law or agreed to in writing, software 11// distributed under the License is distributed on an "AS IS" BASIS, 12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13// See the License for the specific language governing permissions and 14// limitations under the License. 15// 16// 17 18//===================================================================== 19// Static Library: libcompiler_rt-extras 20//===================================================================== 21 22cc_library_static { 23 name: "libcompiler_rt-extras", 24 host_supported: true, 25 static_ndk_lib: true, 26 vendor_available: true, 27 recovery_available: true, 28 sdk_version: "minimum", 29 // The following list contains functions that are not available in libgcc.a, so 30 // we potentially need them when using a Clang-built component (e.g., -ftrapv 31 // with 64-bit integer multiplies. See http://llvm.org/bugs/show_bug.cgi?id=14469.) 32 srcs: ["lib/builtins/mulodi4.c"], 33 sanitize: { 34 never: true, 35 }, 36 stl: "none", 37 38 cflags: [ 39 "-Wno-unused-parameter", 40 "-Wno-visibility", 41 "-Wno-incompatible-pointer-types", 42 "-Werror", 43 ], 44 45 arch: { 46 mips: { 47 srcs: ["lib/builtins/clear_cache.c"], 48 }, 49 mips64: { 50 srcs: ["lib/builtins/clear_cache.c"], 51 }, 52 // Clang generates call to __unorddf2 builtin when compiling s_fmal.c 53 // in bionic. Generate this builtin from compiler-rt for arm64 and 54 // x86_64 (where the corresponding libgcc does not have this builtin. 55 arm64: { 56 srcs: ["lib/builtins/comparedf2.c"], 57 }, 58 x86_64: { 59 srcs: ["lib/builtins/comparedf2.c"], 60 }, 61 }, 62 63 target: { 64 linux_bionic: { 65 enabled: true, 66 }, 67 windows: { 68 enabled: true, 69 }, 70 }, 71} 72 73//===================================================================== 74// Device and Host Static Library: libcompiler_rt 75//===================================================================== 76 77cc_library { 78 name: "libcompiler_rt", 79 vendor_available: false, 80 vndk: { 81 enabled: true, 82 support_system_process: true, 83 }, 84 host_supported: true, 85 // The following list contains platform-independent functionalities. 86 // 87 // Skip apple_versioning.c since it is unused. 88 // Skip atomic.c since it needs to be built separately according to the docs. 89 srcs: [ 90 "lib/builtins/enable_execute_stack.c", 91 "lib/builtins/absvdi2.c", 92 "lib/builtins/absvsi2.c", 93 "lib/builtins/absvti2.c", 94 "lib/builtins/adddf3.c", 95 "lib/builtins/addsf3.c", 96 "lib/builtins/addtf3.c", 97 "lib/builtins/addvdi3.c", 98 "lib/builtins/addvsi3.c", 99 "lib/builtins/addvti3.c", 100 "lib/builtins/ashldi3.c", 101 "lib/builtins/ashlti3.c", 102 "lib/builtins/ashrdi3.c", 103 "lib/builtins/ashrti3.c", 104 "lib/builtins/clear_cache.c", 105 "lib/builtins/clzdi2.c", 106 "lib/builtins/clzsi2.c", 107 "lib/builtins/clzti2.c", 108 "lib/builtins/cmpdi2.c", 109 "lib/builtins/cmpti2.c", 110 "lib/builtins/comparedf2.c", 111 "lib/builtins/comparesf2.c", 112 "lib/builtins/comparetf2.c", 113 "lib/builtins/ctzdi2.c", 114 "lib/builtins/ctzsi2.c", 115 "lib/builtins/ctzti2.c", 116 "lib/builtins/divdc3.c", 117 "lib/builtins/divdf3.c", 118 "lib/builtins/divdi3.c", 119 "lib/builtins/divmoddi4.c", 120 "lib/builtins/divmodsi4.c", 121 "lib/builtins/divsc3.c", 122 "lib/builtins/divsf3.c", 123 "lib/builtins/divsi3.c", 124 "lib/builtins/divtf3.c", 125 "lib/builtins/divti3.c", 126 "lib/builtins/divxc3.c", 127 "lib/builtins/eprintf.c", 128 "lib/builtins/extenddftf2.c", 129 "lib/builtins/extendhfsf2.c", 130 "lib/builtins/extendsfdf2.c", 131 "lib/builtins/extendsftf2.c", 132 "lib/builtins/ffsdi2.c", 133 "lib/builtins/ffsti2.c", 134 "lib/builtins/fixdfdi.c", 135 "lib/builtins/fixdfsi.c", 136 "lib/builtins/fixdfti.c", 137 "lib/builtins/fixsfdi.c", 138 "lib/builtins/fixsfsi.c", 139 "lib/builtins/fixsfti.c", 140 "lib/builtins/fixtfdi.c", 141 "lib/builtins/fixtfsi.c", 142 "lib/builtins/fixtfti.c", 143 "lib/builtins/fixunsdfdi.c", 144 "lib/builtins/fixunsdfsi.c", 145 "lib/builtins/fixunsdfti.c", 146 "lib/builtins/fixunssfdi.c", 147 "lib/builtins/fixunssfsi.c", 148 "lib/builtins/fixunssfti.c", 149 "lib/builtins/fixunstfdi.c", 150 "lib/builtins/fixunstfsi.c", 151 "lib/builtins/fixunstfti.c", 152 "lib/builtins/fixunsxfdi.c", 153 "lib/builtins/fixunsxfsi.c", 154 "lib/builtins/fixunsxfti.c", 155 "lib/builtins/fixxfdi.c", 156 "lib/builtins/fixxfti.c", 157 "lib/builtins/floatdidf.c", 158 "lib/builtins/floatdisf.c", 159 "lib/builtins/floatdixf.c", 160 "lib/builtins/floatsidf.c", 161 "lib/builtins/floatsisf.c", 162 "lib/builtins/floatsitf.c", 163 "lib/builtins/floattidf.c", 164 "lib/builtins/floattisf.c", 165 "lib/builtins/floattixf.c", 166 "lib/builtins/floatundidf.c", 167 "lib/builtins/floatundisf.c", 168 "lib/builtins/floatundixf.c", 169 "lib/builtins/floatunsidf.c", 170 "lib/builtins/floatunsisf.c", 171 "lib/builtins/floatunsitf.c", 172 "lib/builtins/floatuntidf.c", 173 "lib/builtins/floatuntisf.c", 174 "lib/builtins/floatuntixf.c", 175 "lib/builtins/gcc_personality_v0.c", 176 "lib/builtins/int_util.c", 177 "lib/builtins/lshrdi3.c", 178 "lib/builtins/lshrti3.c", 179 "lib/builtins/moddi3.c", 180 "lib/builtins/modsi3.c", 181 "lib/builtins/modti3.c", 182 "lib/builtins/muldc3.c", 183 "lib/builtins/muldf3.c", 184 "lib/builtins/muldi3.c", 185 "lib/builtins/mulodi4.c", 186 "lib/builtins/mulosi4.c", 187 "lib/builtins/muloti4.c", 188 "lib/builtins/mulsc3.c", 189 "lib/builtins/mulsf3.c", 190 "lib/builtins/multf3.c", 191 "lib/builtins/multi3.c", 192 "lib/builtins/mulvdi3.c", 193 "lib/builtins/mulvsi3.c", 194 "lib/builtins/mulvti3.c", 195 "lib/builtins/mulxc3.c", 196 "lib/builtins/negdf2.c", 197 "lib/builtins/negdi2.c", 198 "lib/builtins/negsf2.c", 199 "lib/builtins/negti2.c", 200 "lib/builtins/negvdi2.c", 201 "lib/builtins/negvsi2.c", 202 "lib/builtins/negvti2.c", 203 "lib/builtins/paritydi2.c", 204 "lib/builtins/paritysi2.c", 205 "lib/builtins/parityti2.c", 206 "lib/builtins/popcountdi2.c", 207 "lib/builtins/popcountsi2.c", 208 "lib/builtins/popcountti2.c", 209 "lib/builtins/powidf2.c", 210 "lib/builtins/powisf2.c", 211 "lib/builtins/powitf2.c", 212 "lib/builtins/powixf2.c", 213 "lib/builtins/subdf3.c", 214 "lib/builtins/subsf3.c", 215 "lib/builtins/subtf3.c", 216 "lib/builtins/subvdi3.c", 217 "lib/builtins/subvsi3.c", 218 "lib/builtins/subvti3.c", 219 "lib/builtins/trampoline_setup.c", 220 "lib/builtins/truncdfhf2.c", 221 "lib/builtins/truncdfsf2.c", 222 "lib/builtins/truncsfhf2.c", 223 "lib/builtins/trunctfdf2.c", 224 "lib/builtins/trunctfsf2.c", 225 "lib/builtins/ucmpdi2.c", 226 "lib/builtins/ucmpti2.c", 227 "lib/builtins/udivdi3.c", 228 "lib/builtins/udivmoddi4.c", 229 "lib/builtins/udivmodsi4.c", 230 "lib/builtins/udivmodti4.c", 231 "lib/builtins/udivsi3.c", 232 "lib/builtins/udivti3.c", 233 "lib/builtins/umoddi3.c", 234 "lib/builtins/umodsi3.c", 235 "lib/builtins/umodti3.c", 236 ], 237 238 cflags: [ 239 "-Wno-unused-parameter", 240 "-Wno-visibility", 241 "-Wno-incompatible-pointer-types", 242 "-Werror", 243 ], 244 245 arch: { 246 arm: { 247 cflags: ["-D__ARM_EABI__"], 248 srcs: [ 249 "lib/builtins/arm/aeabi_dcmp.S", 250 "lib/builtins/arm/aeabi_div0.c", 251 "lib/builtins/arm/aeabi_fcmp.S", 252 "lib/builtins/arm/aeabi_idivmod.S", 253 "lib/builtins/arm/aeabi_ldivmod.S", 254 "lib/builtins/arm/aeabi_memcmp.S", 255 "lib/builtins/arm/aeabi_memcpy.S", 256 "lib/builtins/arm/aeabi_memmove.S", 257 "lib/builtins/arm/aeabi_memset.S", 258 "lib/builtins/arm/aeabi_uidivmod.S", 259 "lib/builtins/arm/aeabi_uldivmod.S", 260 "lib/builtins/arm/comparesf2.S", 261 "lib/builtins/arm/divmodsi4.S", 262 "lib/builtins/arm/divsi3.S", 263 "lib/builtins/arm/modsi3.S", 264 "lib/builtins/arm/udivmodsi4.S", 265 "lib/builtins/arm/udivsi3.S", 266 "lib/builtins/arm/umodsi3.S", 267 "lib/builtins/arm/adddf3vfp.S", 268 "lib/builtins/arm/addsf3vfp.S", 269 "lib/builtins/arm/divdf3vfp.S", 270 "lib/builtins/arm/divsf3vfp.S", 271 "lib/builtins/arm/eqdf2vfp.S", 272 "lib/builtins/arm/eqsf2vfp.S", 273 "lib/builtins/arm/extendsfdf2vfp.S", 274 "lib/builtins/arm/fixdfsivfp.S", 275 "lib/builtins/arm/fixsfsivfp.S", 276 "lib/builtins/arm/fixunsdfsivfp.S", 277 "lib/builtins/arm/fixunssfsivfp.S", 278 "lib/builtins/arm/floatsidfvfp.S", 279 "lib/builtins/arm/floatsisfvfp.S", 280 "lib/builtins/arm/floatunssidfvfp.S", 281 "lib/builtins/arm/floatunssisfvfp.S", 282 "lib/builtins/arm/gedf2vfp.S", 283 "lib/builtins/arm/gesf2vfp.S", 284 "lib/builtins/arm/gtdf2vfp.S", 285 "lib/builtins/arm/gtsf2vfp.S", 286 "lib/builtins/arm/ledf2vfp.S", 287 "lib/builtins/arm/lesf2vfp.S", 288 "lib/builtins/arm/ltdf2vfp.S", 289 "lib/builtins/arm/ltsf2vfp.S", 290 "lib/builtins/arm/muldf3vfp.S", 291 "lib/builtins/arm/mulsf3vfp.S", 292 "lib/builtins/arm/nedf2vfp.S", 293 "lib/builtins/arm/negdf2vfp.S", 294 "lib/builtins/arm/negsf2vfp.S", 295 "lib/builtins/arm/nesf2vfp.S", 296 "lib/builtins/arm/subdf3vfp.S", 297 "lib/builtins/arm/subsf3vfp.S", 298 "lib/builtins/arm/truncdfsf2vfp.S", 299 "lib/builtins/arm/unorddf2vfp.S", 300 "lib/builtins/arm/unordsf2vfp.S", 301 ], 302 exclude_srcs: [ 303 "lib/builtins/comparesf2.c", 304 "lib/builtins/divmodsi4.c", 305 "lib/builtins/divsi3.c", 306 "lib/builtins/modsi3.c", 307 "lib/builtins/udivmodsi4.c", 308 "lib/builtins/udivsi3.c", 309 "lib/builtins/umodsi3.c", 310 ], 311 }, 312 mips64: { 313 cflags: [ 314 "-DCRT_HAS_128BIT", 315 ], 316 }, 317 x86: { 318 srcs: [ 319 "lib/builtins/i386/ashldi3.S", 320 "lib/builtins/i386/ashrdi3.S", 321 "lib/builtins/i386/divdi3.S", 322 "lib/builtins/i386/floatdidf.S", 323 "lib/builtins/i386/floatdisf.S", 324 "lib/builtins/i386/floatdixf.S", 325 "lib/builtins/i386/floatundidf.S", 326 "lib/builtins/i386/floatundisf.S", 327 "lib/builtins/i386/floatundixf.S", 328 "lib/builtins/i386/lshrdi3.S", 329 "lib/builtins/i386/moddi3.S", 330 "lib/builtins/i386/muldi3.S", 331 "lib/builtins/i386/udivdi3.S", 332 "lib/builtins/i386/umoddi3.S", 333 ], 334 exclude_srcs: [ 335 "lib/builtins/ashldi3.c", 336 "lib/builtins/ashrdi3.c", 337 "lib/builtins/divdi3.c", 338 "lib/builtins/floatdidf.c", 339 "lib/builtins/floatdisf.c", 340 "lib/builtins/floatdixf.c", 341 "lib/builtins/floatundidf.c", 342 "lib/builtins/floatundisf.c", 343 "lib/builtins/floatundixf.c", 344 "lib/builtins/lshrdi3.c", 345 "lib/builtins/moddi3.c", 346 "lib/builtins/muldi3.c", 347 "lib/builtins/udivdi3.c", 348 "lib/builtins/umoddi3.c", 349 ], 350 }, 351 x86_64: { 352 srcs: [ 353 "lib/builtins/x86_64/floatundixf.S", 354 "lib/builtins/x86_64/floatdisf.c", 355 "lib/builtins/x86_64/floatdidf.c", 356 "lib/builtins/x86_64/floatdixf.c", 357 "lib/builtins/x86_64/floatundisf.S", 358 "lib/builtins/x86_64/floatundidf.S", 359 ], 360 exclude_srcs: [ 361 "lib/builtins/floatundixf.c", 362 "lib/builtins/floatdisf.c", 363 "lib/builtins/floatdidf.c", 364 "lib/builtins/floatdixf.c", 365 "lib/builtins/floatundisf.c", 366 "lib/builtins/floatundidf.c", 367 ], 368 }, 369 }, 370 371 sdk_version: "21", 372 target: { 373 android: { 374 shared_libs: ["liblog"], 375 static_libs: ["liblzma"], 376 }, 377 android_arm: { 378 static_libs: ["libunwind_llvm"], 379 ldflags: ["-Wl,--exclude-libs,libunwind_llvm.a"], 380 }, 381 android_arm64: { 382 static_libs: ["libunwindbacktrace", "libunwind_static"], 383 ldflags: ["-Wl,--exclude-libs,libunwindbacktrace.a:libunwind.a"], 384 }, 385 android_mips: { 386 static_libs: ["libunwindbacktrace", "libunwind_static"], 387 ldflags: ["-Wl,--exclude-libs,libunwindbacktrace.a:libunwind.a"], 388 }, 389 android_mips64: { 390 static_libs: ["libunwindbacktrace", "libunwind_static"], 391 ldflags: ["-Wl,--exclude-libs,libunwindbacktrace.a:libunwind.a"], 392 }, 393 android_x86: { 394 static_libs: ["libunwindbacktrace", "libunwind_static"], 395 ldflags: ["-Wl,--exclude-libs,libunwindbacktrace.a:libunwind.a"], 396 }, 397 android_x86_64: { 398 srcs: ["lib/builtins/ppc/floatditf.c"], 399 static_libs: ["libunwindbacktrace", "libunwind_static"], 400 ldflags: ["-Wl,--exclude-libs,libunwindbacktrace.a:libunwind.a"], 401 }, 402 linux_glibc: { 403 static_libs: ["libunwindbacktrace", "libunwind_static"], 404 shared_libs: ["liblzma"], 405 }, 406 windows: { 407 enabled: true, 408 // Only build enable_execute_stack.c on non-Windows hosts. 409 exclude_srcs: ["lib/builtins/enable_execute_stack.c"], 410 }, 411 }, 412 413 asflags: ["-integrated-as"], 414 no_libgcc: true, 415 416 sanitize: { 417 never: true, 418 }, 419 stl: "none", 420} 421 422cc_defaults { 423 name: "asan_arch_defaults", 424 425 vendor_available: true, 426 enabled: false, 427 target: { 428 android_arm: { 429 enabled: true, 430 }, 431 android_arm64: { 432 enabled: true, 433 }, 434 android_mips: { 435 enabled: true, 436 }, 437 android_mips64: { 438 enabled: true, 439 }, 440 android_x86: { 441 enabled: true, 442 }, 443 android_x86_64: { 444 enabled: true, 445 }, 446 linux_glibc: { 447 enabled: true, 448 }, 449 }, 450} 451 452subdirs=["lib/*"] 453