• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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