1# Copyright (C) 2021 Huawei Device Co., Ltd. 2# Copyright (C) 2019 The Android Open Source Project 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15import("//build/config/clang/clang.gni") 16import("//build/ohos/ndk/ndk.gni") 17import("//build/version.gni") 18import("//third_party/musl/musl_config.gni") 19import("//third_party/musl/musl_src.gni") 20import("//third_party/musl/musl_template.gni") 21 22musl_target_out_dir = "${root_out_dir}/obj/third_party/musl" 23ndk_musl_include = "ndk_musl_include" 24interface_musl_dir = "//interface/sdk_c/third_party/musl" 25target_version_dir = "ndk_musl_include/info" 26target_version_file = "application_target_sdk_version.h" 27 28if (host_os == "mac") { 29 if (host_cpu == "arm64") { 30 toolchains_file_name = "darwin-arm64" 31 deps_name = "darwin_arm64" 32 } else { 33 toolchains_file_name = "darwin-x86_64" 34 deps_name = "darwin_x86_64" 35 } 36 37 darwin_system_toolchains_dir = "${toolchains_dir}/${toolchains_file_name}" 38 ohos_ndk_toolchains("${deps_name}") { 39 dest_dir = "$ndk_darwin_toolchains_out_dir" 40 sources = [ 41 "${darwin_system_toolchains_dir}/llvm/NOTICE", 42 "${darwin_system_toolchains_dir}/llvm/bin", 43 "${darwin_system_toolchains_dir}/llvm/include", 44 "${darwin_system_toolchains_dir}/llvm/lib", 45 "${darwin_system_toolchains_dir}/llvm/libexec", 46 "${darwin_system_toolchains_dir}/llvm/python3", 47 "${darwin_system_toolchains_dir}/llvm/script", 48 "${darwin_system_toolchains_dir}/llvm/share", 49 ] 50 license_file = "${darwin_system_toolchains_dir}/llvm/NOTICE" 51 } 52 53 action("darwin_toolchain") { 54 outputs = [ "${ndk_darwin_toolchains_out_dir}" ] 55 script = "toolchain.sh" 56 args = 57 [ "-i" ] + [ rebase_path("${darwin_system_toolchains_dir}/libcxx-ndk") ] 58 args += [ "-o" ] + [ rebase_path("${ndk_darwin_toolchains_out_dir}") ] 59 args += 60 [ "-l" ] + [ rebase_path("${darwin_system_toolchains_dir}/llvm/bin") ] 61 if (host_cpu == "arm64") { 62 deps = [ ":darwin_arm64" ] 63 } else { 64 deps = [ ":darwin_x86_64" ] 65 } 66 } 67} else { 68 windows_x86_64_toolchain_dir = "${toolchains_dir}/windows-x86_64" 69 ohos_arm64_toolchain_dir = "${toolchains_dir}/ohos-arm64" 70 if (host_cpu == "arm64") { 71 linux_aarch64_toolchains_dir = "${toolchains_dir}/linux-aarch64" 72 ohos_ndk_toolchains("linux_arm64") { 73 dest_dir = "$ndk_linux_toolchains_out_dir" 74 sources = [ 75 "${linux_aarch64_toolchains_dir}/llvm/NOTICE", 76 "${linux_aarch64_toolchains_dir}/llvm/bin", 77 "${linux_aarch64_toolchains_dir}/llvm/include", 78 "${linux_aarch64_toolchains_dir}/llvm/lib", 79 "${linux_aarch64_toolchains_dir}/llvm/libexec", 80 "${linux_aarch64_toolchains_dir}/llvm/python3", 81 "${linux_aarch64_toolchains_dir}/llvm/script", 82 "${linux_aarch64_toolchains_dir}/llvm/share", 83 ] 84 license_file = "${linux_aarch64_toolchains_dir}/llvm/NOTICE" 85 } 86 } else { 87 linux_x86_64_toolchains_dir = "${toolchains_dir}/linux-x86_64" 88 ohos_ndk_toolchains("linux_x86_64") { 89 dest_dir = "$ndk_linux_toolchains_out_dir" 90 sources = [ 91 "${linux_x86_64_toolchains_dir}/llvm/NOTICE", 92 "${linux_x86_64_toolchains_dir}/llvm/bin", 93 "${linux_x86_64_toolchains_dir}/llvm/include", 94 "${linux_x86_64_toolchains_dir}/llvm/lib", 95 "${linux_x86_64_toolchains_dir}/llvm/libexec", 96 "${linux_x86_64_toolchains_dir}/llvm/python3", 97 "${linux_x86_64_toolchains_dir}/llvm/script", 98 "${linux_x86_64_toolchains_dir}/llvm/share", 99 ] 100 license_file = "${linux_x86_64_toolchains_dir}/llvm/NOTICE" 101 } 102 } 103 104 ohos_ndk_toolchains("windows_x86_64") { 105 dest_dir = "$ndk_windows_toolchains_out_dir" 106 sources = [ 107 "${windows_x86_64_toolchain_dir}/llvm/NOTICE", 108 "${windows_x86_64_toolchain_dir}/llvm/bin", 109 "${windows_x86_64_toolchain_dir}/llvm/include", 110 "${windows_x86_64_toolchain_dir}/llvm/lib", 111 "${windows_x86_64_toolchain_dir}/llvm/libexec", 112 "${windows_x86_64_toolchain_dir}/llvm/script", 113 "${windows_x86_64_toolchain_dir}/llvm/share", 114 ] 115 args = [ "--follow-all-symlinks" ] 116 license_file = "${windows_x86_64_toolchain_dir}/llvm/NOTICE" 117 } 118 119 ohos_ndk_toolchains("ohos_arm64") { 120 dest_dir = "$ndk_ohos_toolchains_out_dir" 121 sources = [ 122 "${ohos_arm64_toolchain_dir}/llvm/bin", 123 "${ohos_arm64_toolchain_dir}/llvm/include", 124 "${ohos_arm64_toolchain_dir}/llvm/lib", 125 "${ohos_arm64_toolchain_dir}/llvm/libexec", 126 "${ohos_arm64_toolchain_dir}/llvm/python3", 127 "${ohos_arm64_toolchain_dir}/llvm/share", 128 ] 129 } 130 131 action("linux_toolchain") { 132 outputs = [ "${ndk_linux_toolchains_out_dir}" ] 133 script = "toolchain.sh" 134 if (host_cpu == "arm64") { 135 args = [ "-i" ] + 136 [ rebase_path("${linux_aarch64_toolchains_dir}/libcxx-ndk") ] 137 } else { 138 args = [ "-i" ] + 139 [ rebase_path("${linux_x86_64_toolchains_dir}/libcxx-ndk") ] 140 } 141 args += [ "-o" ] + [ rebase_path("${ndk_linux_toolchains_out_dir}") ] 142 if (host_cpu == "arm64") { 143 args += 144 [ "-l" ] + [ rebase_path("${linux_aarch64_toolchains_dir}/llvm/bin") ] 145 } else { 146 args += 147 [ "-l" ] + [ rebase_path("${linux_x86_64_toolchains_dir}/llvm/bin") ] 148 } 149 if (host_cpu == "arm64") { 150 deps = [ ":linux_arm64" ] 151 } else { 152 deps = [ ":linux_x86_64" ] 153 } 154 } 155 156 action("windows_toolchain") { 157 outputs = [ "${ndk_windows_toolchains_out_dir}" ] 158 script = "toolchain.sh" 159 args = 160 [ "-i" ] + [ rebase_path("${windows_x86_64_toolchain_dir}/libcxx-ndk") ] 161 args += [ "-o" ] + [ rebase_path("${ndk_windows_toolchains_out_dir}") ] 162 163 if (host_cpu == "arm64") { 164 args += 165 [ "-l" ] + [ rebase_path("${linux_aarch64_toolchains_dir}/llvm/bin") ] 166 } else { 167 args += 168 [ "-l" ] + [ rebase_path("${linux_x86_64_toolchains_dir}/llvm/bin") ] 169 } 170 deps = [ ":windows_x86_64" ] 171 } 172 173 action("ohos_toolchain") { 174 outputs = [ "${ndk_ohos_toolchains_out_dir}" ] 175 script = "toolchain.sh" 176 args = [ "-i" ] + [ rebase_path("${ohos_arm64_toolchain_dir}/libcxx-ndk") ] 177 args += [ "-o" ] + [ rebase_path("${ndk_ohos_toolchains_out_dir}") ] 178 if (host_cpu == "arm64") { 179 args += 180 [ "-l" ] + [ rebase_path("${linux_aarch64_toolchains_dir}/llvm/bin") ] 181 } else { 182 args += 183 [ "-l" ] + [ rebase_path("${linux_x86_64_toolchains_dir}/llvm/bin") ] 184 } 185 deps = [ ":ohos_arm64" ] 186 } 187} 188 189group("ndk_toolchain") { 190 if (host_os == "mac") { 191 deps = [ ":darwin_toolchain" ] 192 } else { 193 deps = [ 194 ":linux_toolchain", 195 ":ohos_toolchain", 196 ":windows_toolchain", 197 ] 198 } 199} 200 201group("musl_sysroot") { 202 deps = [ 203 ":copy_musl_sysroot", 204 ":musl_arm_bits_arm32", 205 ":musl_arm_uapi_arm32", 206 ":musl_bits_aarch64", 207 ":musl_bits_x86_64", 208 ] 209} 210 211action("copy_ndk_uapi") { 212 outputs = [ "${musl_target_out_dir}/${ndk_musl_include}/linux" ] 213 script = "${musl_dir}/scripts/copy_uapi.sh" 214 args = [ "-i" ] + [ rebase_path("${musl_uapi_dir}") ] 215 args += 216 [ "-o" ] + [ rebase_path("${musl_target_out_dir}/${ndk_musl_include}") ] 217 args += [ "-t" ] + [ "${musl_arch}" ] 218} 219 220action("copy_ndk_musl_headers") { 221 outputs = [ "${musl_target_out_dir}/${ndk_musl_include}" ] 222 script = "copy_ndk_musl_headers.sh" 223 args = [ "-i" ] + [ rebase_path("${interface_musl_dir}/${ndk_musl_include}") ] 224 args += 225 [ "-o" ] + [ rebase_path("${musl_target_out_dir}/${ndk_musl_include}") ] 226 deps = [ ":copy_ndk_uapi" ] 227} 228 229action("updated_version") { 230 outputs = [ "${musl_target_out_dir}/${target_version_dir}" ] 231 script = "updated_version.py" 232 args = [ "-p" ] + [ rebase_path( 233 "${musl_target_out_dir}/${target_version_dir}/${target_version_file}") ] 234 args += [ "-v" ] + [ api_version ] 235 deps = [ ":copy_ndk_musl_headers" ] 236} 237 238action("copy_musl_sysroot") { 239 outputs = [ "${ndk_headers_out_dir}" ] 240 script = "copy_musl_sysroot.sh" 241 args = 242 [ "-i" ] + [ rebase_path("${musl_target_out_dir}/${ndk_musl_include}") ] 243 args += [ "-o" ] + [ rebase_path("${ndk_headers_out_dir}") ] 244 args += [ "-t" ] + [ "${musl_arch}" ] 245 deps = [ ":updated_version" ] 246} 247 248musl_libs_arm32 = [ 249 "//third_party/musl:create_alltypes_h(//build/toolchain/ohos:ohos_clang_arm)", 250 "//third_party/musl:create_syscall_h(//build/toolchain/ohos:ohos_clang_arm)", 251 "//third_party/musl:musl_copy_inc_bits(//build/toolchain/ohos:ohos_clang_arm)", 252] 253 254musl_libs_aarch64 = [ 255 "//third_party/musl:create_alltypes_h(//build/toolchain/ohos:ohos_clang_arm64)", 256 "//third_party/musl:create_syscall_h(//build/toolchain/ohos:ohos_clang_arm64)", 257 "//third_party/musl:musl_copy_inc_bits(//build/toolchain/ohos:ohos_clang_arm64)", 258] 259 260musl_libs_x86_64 = [ 261 "//third_party/musl:create_alltypes_h(//build/toolchain/ohos:ohos_clang_x86_64)", 262 "//third_party/musl:create_syscall_h(//build/toolchain/ohos:ohos_clang_x86_64)", 263 "//third_party/musl:musl_copy_inc_bits(//build/toolchain/ohos:ohos_clang_x86_64)", 264] 265 266musl_lib_arm32 = [ 267 "//third_party/musl:soft_musl_crt_install_action(//build/toolchain/ohos:ohos_clang_arm)", 268 "//third_party/musl:soft_libc_musl_static(//build/toolchain/ohos:ohos_clang_arm)", 269 "//third_party/musl:soft_libm(//build/toolchain/ohos:ohos_clang_arm)", 270 "//third_party/musl:soft_libdl(//build/toolchain/ohos:ohos_clang_arm)", 271 "//third_party/musl:soft_libpthread(//build/toolchain/ohos:ohos_clang_arm)", 272 "//third_party/musl:soft_libcrypt(//build/toolchain/ohos:ohos_clang_arm)", 273 "//third_party/musl:soft_libutil(//build/toolchain/ohos:ohos_clang_arm)", 274 "//third_party/musl:soft_libxnet(//build/toolchain/ohos:ohos_clang_arm)", 275 "//third_party/musl:soft_libresolv(//build/toolchain/ohos:ohos_clang_arm)", 276 "//third_party/musl:soft_librt(//build/toolchain/ohos:ohos_clang_arm)", 277] 278 279musl_lib_arm64 = [ 280 "//third_party/musl:soft_musl_crt_install_action(//build/toolchain/ohos:ohos_clang_arm64)", 281 "//third_party/musl:soft_libc_musl_static(//build/toolchain/ohos:ohos_clang_arm64)", 282 "//third_party/musl:soft_libm(//build/toolchain/ohos:ohos_clang_arm64)", 283 "//third_party/musl:soft_libdl(//build/toolchain/ohos:ohos_clang_arm64)", 284 "//third_party/musl:soft_libpthread(//build/toolchain/ohos:ohos_clang_arm64)", 285 "//third_party/musl:soft_libcrypt(//build/toolchain/ohos:ohos_clang_arm64)", 286 "//third_party/musl:soft_libutil(//build/toolchain/ohos:ohos_clang_arm64)", 287 "//third_party/musl:soft_libxnet(//build/toolchain/ohos:ohos_clang_arm64)", 288 "//third_party/musl:soft_libresolv(//build/toolchain/ohos:ohos_clang_arm64)", 289 "//third_party/musl:soft_librt(//build/toolchain/ohos:ohos_clang_arm64)", 290] 291 292musl_lib_x86_64 = [ 293 "//third_party/musl:soft_musl_crt_install_action(//build/toolchain/ohos:ohos_clang_x86_64)", 294 "//third_party/musl:soft_libc_musl_static(//build/toolchain/ohos:ohos_clang_x86_64)", 295 "//third_party/musl:soft_libm(//build/toolchain/ohos:ohos_clang_x86_64)", 296 "//third_party/musl:soft_libdl(//build/toolchain/ohos:ohos_clang_x86_64)", 297 "//third_party/musl:soft_libpthread(//build/toolchain/ohos:ohos_clang_x86_64)", 298 "//third_party/musl:soft_libcrypt(//build/toolchain/ohos:ohos_clang_x86_64)", 299 "//third_party/musl:soft_libutil(//build/toolchain/ohos:ohos_clang_x86_64)", 300 "//third_party/musl:soft_libxnet(//build/toolchain/ohos:ohos_clang_x86_64)", 301 "//third_party/musl:soft_libresolv(//build/toolchain/ohos:ohos_clang_x86_64)", 302 "//third_party/musl:soft_librt(//build/toolchain/ohos:ohos_clang_x86_64)", 303] 304 305## arm-linux-ohos asm directory 306ohos_ndk_copy("musl_arm_uapi_arm32") { 307 dest_dir = "$ndk_os_irrelevant_out_dir/sysroot/usr/include/arm-linux-ohos" 308 309 sources = 310 [ "//kernel/linux/patches/linux-5.10/prebuilts/usr/include/asm-arm/asm" ] 311 args = [ "--ignore-stale" ] 312} 313 314## arm-linux-ohos bits directory 315ohos_copy("musl_arm_bits_arm32") { 316 deps = musl_libs_arm32 317 sources = [] 318 sources_temp = [ 319 "alltypes.h", 320 "syscall.h", 321 ] 322 sources_temp += musl_inc_bits_files 323 sources_orig = get_path_info(sources_temp, "file") 324 325 # print("${sources_orig}") 326 327 foreach(s, sources_orig) { 328 sources += [ get_label_info(deps[0], "target_out_dir") + 329 "/usr/include/arm-linux-ohos/bits/${s}" ] 330 } 331 outputs = [ "$ndk_os_irrelevant_out_dir/sysroot/usr/include/arm-linux-ohos/bits/{{source_file_part}}" ] 332} 333 334## aarch64-linux-ohos bits directory 335ohos_copy("musl_bits_aarch64") { 336 deps = musl_libs_aarch64 337 sources = [] 338 sources_temp = [ 339 "alltypes.h", 340 "syscall.h", 341 ] 342 sources_temp += musl_inc_bits_files 343 sources_orig = get_path_info(sources_temp, "file") 344 345 # print("${sources_orig}") 346 347 foreach(s, sources_orig) { 348 sources += [ get_label_info(deps[0], "target_out_dir") + 349 "/usr/include/aarch64-linux-ohos/bits/${s}" ] 350 } 351 outputs = [ "$ndk_os_irrelevant_out_dir/sysroot/usr/include/aarch64-linux-ohos/bits/{{source_file_part}}" ] 352} 353 354## x86_64-linux-ohos bits directory 355ohos_copy("musl_bits_x86_64") { 356 deps = musl_libs_x86_64 357 sources = [] 358 sources_temp = [ 359 "alltypes.h", 360 "syscall.h", 361 ] 362 sources_temp += musl_inc_bits_files 363 sources_orig = get_path_info(sources_temp, "file") 364 365 # print("${sources_orig}") 366 367 foreach(s, sources_orig) { 368 sources += [ get_label_info(deps[0], "target_out_dir") + 369 "/usr/include/x86_64-linux-ohos/bits/${s}" ] 370 } 371 outputs = [ "$ndk_os_irrelevant_out_dir/sysroot/usr/include/x86_64-linux-ohos/bits/{{source_file_part}}" ] 372} 373 374ohos_copy("musl_ndk_libs_arm32") { 375 deps = musl_lib_arm32 376 crt_dir = "${root_build_dir}/obj/third_party/musl/usr/lib/arm-linux-ohos" 377 sources = [ 378 "${crt_dir}/Scrt1.o", 379 "${crt_dir}/crt1.o", 380 "${crt_dir}/crti.o", 381 "${crt_dir}/crtn.o", 382 "${crt_dir}/rcrt1.o", 383 ] 384 sources += [ get_label_info(deps[0], "target_out_dir") + 385 "/usr/lib/arm-linux-ohos/libm.a" ] 386 sources += [ get_label_info(deps[0], "target_out_dir") + 387 "/usr/lib/arm-linux-ohos/libdl.a" ] 388 sources += [ get_label_info(deps[0], "target_out_dir") + 389 "/usr/lib/arm-linux-ohos/libc.a" ] 390 sources += [ get_label_info(deps[0], "target_out_dir") + 391 "/usr/lib/arm-linux-ohos/libcrypt.a" ] 392 sources += [ get_label_info(deps[0], "target_out_dir") + 393 "/usr/lib/arm-linux-ohos/libpthread.a" ] 394 sources += [ get_label_info(deps[0], "target_out_dir") + 395 "/usr/lib/arm-linux-ohos/libresolv.a" ] 396 sources += [ get_label_info(deps[0], "target_out_dir") + 397 "/usr/lib/arm-linux-ohos/librt.a" ] 398 sources += [ get_label_info(deps[0], "target_out_dir") + 399 "/usr/lib/arm-linux-ohos/libutil.a" ] 400 sources += [ get_label_info(deps[0], "target_out_dir") + 401 "/usr/lib/arm-linux-ohos/libxnet.a" ] 402 403 outputs = [ "$ndk_os_irrelevant_out_dir/sysroot/usr/lib/arm-linux-ohos/{{source_file_part}}" ] 404} 405 406ohos_copy("musl_ndk_libs_aarch64") { 407 deps = musl_lib_arm64 408 sources = [ get_label_info(deps[0], "target_out_dir") + 409 "/usr/lib/aarch64-linux-ohos/Scrt1.o" ] 410 sources += [ get_label_info(deps[0], "target_out_dir") + 411 "/usr/lib/aarch64-linux-ohos/crt1.o" ] 412 sources += [ get_label_info(deps[0], "target_out_dir") + 413 "/usr/lib/aarch64-linux-ohos/crti.o" ] 414 sources += [ get_label_info(deps[0], "target_out_dir") + 415 "/usr/lib/aarch64-linux-ohos/crtn.o" ] 416 sources += [ get_label_info(deps[0], "target_out_dir") + 417 "/usr/lib/aarch64-linux-ohos/rcrt1.o" ] 418 sources += [ get_label_info(deps[0], "target_out_dir") + 419 "/usr/lib/aarch64-linux-ohos/libc.a" ] 420 sources += [ get_label_info(deps[0], "target_out_dir") + 421 "/usr/lib/aarch64-linux-ohos/libdl.a" ] 422 sources += [ get_label_info(deps[0], "target_out_dir") + 423 "/usr/lib/aarch64-linux-ohos/libm.a" ] 424 sources += [ get_label_info(deps[0], "target_out_dir") + 425 "/usr/lib/aarch64-linux-ohos/libcrypt.a" ] 426 sources += [ get_label_info(deps[0], "target_out_dir") + 427 "/usr/lib/aarch64-linux-ohos/libpthread.a" ] 428 sources += [ get_label_info(deps[0], "target_out_dir") + 429 "/usr/lib/aarch64-linux-ohos/libresolv.a" ] 430 sources += [ get_label_info(deps[0], "target_out_dir") + 431 "/usr/lib/aarch64-linux-ohos/librt.a" ] 432 sources += [ get_label_info(deps[0], "target_out_dir") + 433 "/usr/lib/aarch64-linux-ohos/libutil.a" ] 434 sources += [ get_label_info(deps[0], "target_out_dir") + 435 "/usr/lib/aarch64-linux-ohos/libxnet.a" ] 436 437 outputs = [ "$ndk_os_irrelevant_out_dir/sysroot/usr/lib/aarch64-linux-ohos/{{source_file_part}}" ] 438} 439 440ohos_copy("musl_ndk_libs_x86_64") { 441 deps = musl_lib_x86_64 442 crt_dir = "${root_build_dir}/obj/third_party/musl/usr/lib/x86_64-linux-ohos" 443 sources = [ 444 "${crt_dir}/Scrt1.o", 445 "${crt_dir}/crt1.o", 446 "${crt_dir}/crti.o", 447 "${crt_dir}/crtn.o", 448 "${crt_dir}/rcrt1.o", 449 ] 450 sources += [ get_label_info(deps[0], "target_out_dir") + 451 "/usr/lib/x86_64-linux-ohos/libc.a" ] 452 sources += [ get_label_info(deps[0], "target_out_dir") + 453 "/usr/lib/x86_64-linux-ohos/libdl.a" ] 454 sources += [ get_label_info(deps[0], "target_out_dir") + 455 "/usr/lib/x86_64-linux-ohos/libm.a" ] 456 sources += [ get_label_info(deps[0], "target_out_dir") + 457 "/usr/lib/x86_64-linux-ohos/libcrypt.a" ] 458 sources += [ get_label_info(deps[0], "target_out_dir") + 459 "/usr/lib/x86_64-linux-ohos/libpthread.a" ] 460 sources += [ get_label_info(deps[0], "target_out_dir") + 461 "/usr/lib/x86_64-linux-ohos/libresolv.a" ] 462 sources += [ get_label_info(deps[0], "target_out_dir") + 463 "/usr/lib/x86_64-linux-ohos/librt.a" ] 464 sources += [ get_label_info(deps[0], "target_out_dir") + 465 "/usr/lib/x86_64-linux-ohos/libutil.a" ] 466 sources += [ get_label_info(deps[0], "target_out_dir") + 467 "/usr/lib/x86_64-linux-ohos/libxnet.a" ] 468 469 outputs = [ "$ndk_os_irrelevant_out_dir/sysroot/usr/lib/x86_64-linux-ohos/{{source_file_part}}" ] 470} 471 472ohos_ndk_copy("copy_compatible_config") { 473 dest_dir = "$ndk_os_irrelevant_out_dir" 474 sources = 475 [ "//interface/sdk_c/third_party/musl/ndk_script/compatible_config.json" ] 476 args = [ "--ignore-stale" ] 477} 478