• 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 if (host_os == "linux" && host_cpu == "arm64") {
68  linux_aarch64_toolchains_dir = "${toolchains_dir}/linux-aarch64"
69  ohos_ndk_toolchains("linux_arm64") {
70    dest_dir = "$ndk_linux_toolchains_out_dir"
71    sources = [
72      "${linux_aarch64_toolchains_dir}/llvm/NOTICE",
73      "${linux_aarch64_toolchains_dir}/llvm/bin",
74      "${linux_aarch64_toolchains_dir}/llvm/include",
75      "${linux_aarch64_toolchains_dir}/llvm/lib",
76      "${linux_aarch64_toolchains_dir}/llvm/libexec",
77      "${linux_aarch64_toolchains_dir}/llvm/python3",
78      "${linux_aarch64_toolchains_dir}/llvm/script",
79      "${linux_aarch64_toolchains_dir}/llvm/share",
80    ]
81    license_file = "${linux_aarch64_toolchains_dir}/llvm/NOTICE"
82  }
83
84  action("linux_toolchain") {
85    outputs = [ "${ndk_linux_toolchains_out_dir}" ]
86    script = "toolchain.sh"
87    args =
88        [ "-i" ] + [ rebase_path("${linux_aarch64_toolchains_dir}/libcxx-ndk") ]
89    args += [ "-o" ] + [ rebase_path("${ndk_linux_toolchains_out_dir}") ]
90    args +=
91        [ "-l" ] + [ rebase_path("${linux_aarch64_toolchains_dir}/llvm/bin") ]
92    deps = [ ":linux_arm64" ]
93  }
94} else {
95  windows_x86_64_toolchain_dir = "${toolchains_dir}/windows-x86_64"
96  ohos_arm64_toolchain_dir = "${toolchains_dir}/ohos-arm64"
97  linux_x86_64_toolchains_dir = "${toolchains_dir}/linux-x86_64"
98  prebuilts_python = "//prebuilts/python_llvm"
99  ohos_ndk_toolchains("linux_x86_64") {
100    dest_dir = "$ndk_linux_toolchains_out_dir"
101    sources = [
102      "${linux_x86_64_toolchains_dir}/llvm/NOTICE",
103      "${linux_x86_64_toolchains_dir}/llvm/bin",
104      "${linux_x86_64_toolchains_dir}/llvm/include",
105      "${linux_x86_64_toolchains_dir}/llvm/lib",
106      "${linux_x86_64_toolchains_dir}/llvm/libexec",
107      "${linux_x86_64_toolchains_dir}/llvm/python3",
108      "${linux_x86_64_toolchains_dir}/llvm/script",
109      "${linux_x86_64_toolchains_dir}/llvm/share",
110    ]
111    license_file = "${linux_x86_64_toolchains_dir}/llvm/NOTICE"
112  }
113
114  ohos_ndk_toolchains("windows_x86_64") {
115    dest_dir = "$ndk_windows_toolchains_out_dir"
116    sources = [
117      "${windows_x86_64_toolchain_dir}/llvm/NOTICE",
118      "${windows_x86_64_toolchain_dir}/llvm/bin",
119      "${windows_x86_64_toolchain_dir}/llvm/include",
120      "${windows_x86_64_toolchain_dir}/llvm/lib",
121      "${windows_x86_64_toolchain_dir}/llvm/libexec",
122      "${windows_x86_64_toolchain_dir}/llvm/python3",
123      "${windows_x86_64_toolchain_dir}/llvm/script",
124      "${windows_x86_64_toolchain_dir}/llvm/share",
125    ]
126    args = [ "--follow-all-symlinks" ]
127    license_file = "${windows_x86_64_toolchain_dir}/llvm/NOTICE"
128  }
129
130  ohos_ndk_toolchains("ohos_arm64") {
131    dest_dir = "$ndk_ohos_toolchains_out_dir"
132    sources = [
133      "${ohos_arm64_toolchain_dir}/llvm/bin",
134      "${ohos_arm64_toolchain_dir}/llvm/include",
135      "${ohos_arm64_toolchain_dir}/llvm/lib",
136      "${ohos_arm64_toolchain_dir}/llvm/libexec",
137      "${ohos_arm64_toolchain_dir}/llvm/python3",
138      "${ohos_arm64_toolchain_dir}/llvm/share",
139    ]
140  }
141
142  action("linux_toolchain") {
143    outputs = [ "${ndk_linux_toolchains_out_dir}" ]
144    script = "toolchain.sh"
145    args =
146        [ "-i" ] + [ rebase_path("${linux_x86_64_toolchains_dir}/libcxx-ndk") ]
147    args += [ "-o" ] + [ rebase_path("${ndk_linux_toolchains_out_dir}") ]
148    args +=
149        [ "-l" ] + [ rebase_path("${linux_x86_64_toolchains_dir}/llvm/bin") ]
150    args += [ "-p" ] + [ rebase_path("${prebuilts_python}/linux-x86") ]
151    deps = [ ":linux_x86_64" ]
152  }
153
154  action("windows_toolchain") {
155    outputs = [ "${ndk_windows_toolchains_out_dir}" ]
156    script = "toolchain.sh"
157    args =
158        [ "-i" ] + [ rebase_path("${windows_x86_64_toolchain_dir}/libcxx-ndk") ]
159    args += [ "-o" ] + [ rebase_path("${ndk_windows_toolchains_out_dir}") ]
160
161    if (host_cpu == "arm64") {
162      args +=
163          [ "-l" ] + [ rebase_path("${linux_aarch64_toolchains_dir}/llvm/bin") ]
164    } else {
165      args +=
166          [ "-l" ] + [ rebase_path("${linux_x86_64_toolchains_dir}/llvm/bin") ]
167      args += [ "-p" ] + [ rebase_path("${prebuilts_python}/windows-x86") ]
168    }
169    deps = [ ":windows_x86_64" ]
170  }
171
172  action("ohos_toolchain") {
173    outputs = [ "${ndk_ohos_toolchains_out_dir}" ]
174    script = "toolchain.sh"
175    args = [ "-i" ] + [ rebase_path("${ohos_arm64_toolchain_dir}/libcxx-ndk") ]
176    args += [ "-o" ] + [ rebase_path("${ndk_ohos_toolchains_out_dir}") ]
177    if (host_cpu == "arm64") {
178      args +=
179          [ "-l" ] + [ rebase_path("${linux_aarch64_toolchains_dir}/llvm/bin") ]
180    } else {
181      args +=
182          [ "-l" ] + [ rebase_path("${linux_x86_64_toolchains_dir}/llvm/bin") ]
183    }
184    deps = [ ":ohos_arm64" ]
185  }
186}
187
188group("ndk_toolchain") {
189  if (host_os == "mac") {
190    deps = [ ":darwin_toolchain" ]
191  } else if (host_os == "linux" && host_cpu == "arm64") {
192    deps = [ ":linux_toolchain" ]
193  } else {
194    deps = [
195      ":linux_toolchain",
196      ":ohos_toolchain",
197      ":windows_toolchain",
198    ]
199  }
200}
201
202group("musl_sysroot") {
203  deps = [
204    ":copy_musl_sysroot",
205    ":musl_arm_bits_arm32",
206    ":musl_arm_uapi_arm32",
207    ":musl_bits_aarch64",
208    ":musl_bits_x86_64",
209  ]
210}
211
212action("copy_ndk_uapi") {
213  outputs = [ "${musl_target_out_dir}/${ndk_musl_include}/linux" ]
214  script = "${musl_dir}/scripts/copy_uapi.sh"
215  args = [ "-i" ] + [ rebase_path("${musl_uapi_dir}") ]
216  args +=
217      [ "-o" ] + [ rebase_path("${musl_target_out_dir}/${ndk_musl_include}") ]
218  args += [ "-t" ] + [ "${musl_arch}" ]
219}
220
221action("copy_ndk_musl_headers") {
222  outputs = [ "${musl_target_out_dir}/${ndk_musl_include}" ]
223  script = "copy_ndk_musl_headers.sh"
224  args = [ "-i" ] + [ rebase_path("${interface_musl_dir}/${ndk_musl_include}") ]
225  args +=
226      [ "-o" ] + [ rebase_path("${musl_target_out_dir}/${ndk_musl_include}") ]
227  deps = [ ":copy_ndk_uapi" ]
228}
229
230action("updated_version") {
231  outputs = [ "${musl_target_out_dir}/${target_version_dir}" ]
232  script = "updated_version.py"
233  args = [ "-p" ] + [ rebase_path(
234             "${musl_target_out_dir}/${target_version_dir}/${target_version_file}") ]
235  args += [ "-v" ] + [ api_version ]
236  deps = [ ":copy_ndk_musl_headers" ]
237}
238
239action("copy_musl_sysroot") {
240  outputs = [ "${ndk_headers_out_dir}" ]
241  script = "copy_musl_sysroot.sh"
242  args =
243      [ "-i" ] + [ rebase_path("${musl_target_out_dir}/${ndk_musl_include}") ]
244  args += [ "-o" ] + [ rebase_path("${ndk_headers_out_dir}") ]
245  args += [ "-t" ] + [ "${musl_arch}" ]
246  deps = [ ":updated_version" ]
247}
248
249musl_libs_arm32 = [
250  "//third_party/musl:create_alltypes_h(//build/toolchain/ohos:ohos_clang_arm)",
251  "//third_party/musl:create_syscall_h(//build/toolchain/ohos:ohos_clang_arm)",
252  "//third_party/musl:musl_copy_inc_bits(//build/toolchain/ohos:ohos_clang_arm)",
253]
254
255musl_libs_aarch64 = [
256  "//third_party/musl:create_alltypes_h(//build/toolchain/ohos:ohos_clang_arm64)",
257  "//third_party/musl:create_syscall_h(//build/toolchain/ohos:ohos_clang_arm64)",
258  "//third_party/musl:musl_copy_inc_bits(//build/toolchain/ohos:ohos_clang_arm64)",
259]
260
261musl_libs_x86_64 = [
262  "//third_party/musl:create_alltypes_h(//build/toolchain/ohos:ohos_clang_x86_64)",
263  "//third_party/musl:create_syscall_h(//build/toolchain/ohos:ohos_clang_x86_64)",
264  "//third_party/musl:musl_copy_inc_bits(//build/toolchain/ohos:ohos_clang_x86_64)",
265]
266
267musl_lib_arm32 = [
268  "//third_party/musl:soft_musl_crt_install_action(//build/toolchain/ohos:ohos_clang_arm)",
269  "//third_party/musl:soft_libc_musl_static(//build/toolchain/ohos:ohos_clang_arm)",
270  "//third_party/musl:soft_libm(//build/toolchain/ohos:ohos_clang_arm)",
271  "//third_party/musl:soft_libdl(//build/toolchain/ohos:ohos_clang_arm)",
272  "//third_party/musl:soft_libpthread(//build/toolchain/ohos:ohos_clang_arm)",
273  "//third_party/musl:soft_libcrypt(//build/toolchain/ohos:ohos_clang_arm)",
274  "//third_party/musl:soft_libutil(//build/toolchain/ohos:ohos_clang_arm)",
275  "//third_party/musl:soft_libxnet(//build/toolchain/ohos:ohos_clang_arm)",
276  "//third_party/musl:soft_libresolv(//build/toolchain/ohos:ohos_clang_arm)",
277  "//third_party/musl:soft_librt(//build/toolchain/ohos:ohos_clang_arm)",
278]
279
280musl_lib_arm64 = [
281  "//third_party/musl:soft_musl_crt_install_action(//build/toolchain/ohos:ohos_clang_arm64)",
282  "//third_party/musl:soft_libc_musl_static(//build/toolchain/ohos:ohos_clang_arm64)",
283  "//third_party/musl:soft_libm(//build/toolchain/ohos:ohos_clang_arm64)",
284  "//third_party/musl:soft_libdl(//build/toolchain/ohos:ohos_clang_arm64)",
285  "//third_party/musl:soft_libpthread(//build/toolchain/ohos:ohos_clang_arm64)",
286  "//third_party/musl:soft_libcrypt(//build/toolchain/ohos:ohos_clang_arm64)",
287  "//third_party/musl:soft_libutil(//build/toolchain/ohos:ohos_clang_arm64)",
288  "//third_party/musl:soft_libxnet(//build/toolchain/ohos:ohos_clang_arm64)",
289  "//third_party/musl:soft_libresolv(//build/toolchain/ohos:ohos_clang_arm64)",
290  "//third_party/musl:soft_librt(//build/toolchain/ohos:ohos_clang_arm64)",
291]
292
293musl_lib_x86_64 = [
294  "//third_party/musl:soft_musl_crt_install_action(//build/toolchain/ohos:ohos_clang_x86_64)",
295  "//third_party/musl:soft_libc_musl_static(//build/toolchain/ohos:ohos_clang_x86_64)",
296  "//third_party/musl:soft_libm(//build/toolchain/ohos:ohos_clang_x86_64)",
297  "//third_party/musl:soft_libdl(//build/toolchain/ohos:ohos_clang_x86_64)",
298  "//third_party/musl:soft_libpthread(//build/toolchain/ohos:ohos_clang_x86_64)",
299  "//third_party/musl:soft_libcrypt(//build/toolchain/ohos:ohos_clang_x86_64)",
300  "//third_party/musl:soft_libutil(//build/toolchain/ohos:ohos_clang_x86_64)",
301  "//third_party/musl:soft_libxnet(//build/toolchain/ohos:ohos_clang_x86_64)",
302  "//third_party/musl:soft_libresolv(//build/toolchain/ohos:ohos_clang_x86_64)",
303  "//third_party/musl:soft_librt(//build/toolchain/ohos:ohos_clang_x86_64)",
304]
305
306## arm-linux-ohos asm directory
307ohos_ndk_copy("musl_arm_uapi_arm32") {
308  dest_dir = "$ndk_os_irrelevant_out_dir/sysroot/usr/include/arm-linux-ohos"
309
310  sources =
311      [ "//kernel/linux/patches/linux-5.10/prebuilts/usr/include/asm-arm/asm" ]
312  args = [ "--ignore-stale" ]
313}
314
315## arm-linux-ohos bits directory
316ohos_copy("musl_arm_bits_arm32") {
317  deps = musl_libs_arm32
318  sources = []
319  sources_temp = [
320    "alltypes.h",
321    "syscall.h",
322  ]
323  sources_temp += musl_inc_bits_files
324  sources_orig = get_path_info(sources_temp, "file")
325
326  # print("${sources_orig}")
327
328  foreach(s, sources_orig) {
329    sources += [ get_label_info(deps[0], "target_out_dir") +
330                 "/usr/include/arm-linux-ohos/bits/${s}" ]
331  }
332  outputs = [ "$ndk_os_irrelevant_out_dir/sysroot/usr/include/arm-linux-ohos/bits/{{source_file_part}}" ]
333}
334
335## aarch64-linux-ohos bits directory
336ohos_copy("musl_bits_aarch64") {
337  deps = musl_libs_aarch64
338  sources = []
339  sources_temp = [
340    "alltypes.h",
341    "syscall.h",
342  ]
343  sources_temp += musl_inc_bits_files
344  sources_orig = get_path_info(sources_temp, "file")
345
346  # print("${sources_orig}")
347
348  foreach(s, sources_orig) {
349    sources += [ get_label_info(deps[0], "target_out_dir") +
350                 "/usr/include/aarch64-linux-ohos/bits/${s}" ]
351  }
352  outputs = [ "$ndk_os_irrelevant_out_dir/sysroot/usr/include/aarch64-linux-ohos/bits/{{source_file_part}}" ]
353}
354
355## x86_64-linux-ohos bits directory
356ohos_copy("musl_bits_x86_64") {
357  deps = musl_libs_x86_64
358  sources = []
359  sources_temp = [
360    "alltypes.h",
361    "syscall.h",
362  ]
363  sources_temp += musl_inc_bits_files
364  sources_orig = get_path_info(sources_temp, "file")
365
366  # print("${sources_orig}")
367
368  foreach(s, sources_orig) {
369    sources += [ get_label_info(deps[0], "target_out_dir") +
370                 "/usr/include/x86_64-linux-ohos/bits/${s}" ]
371  }
372  outputs = [ "$ndk_os_irrelevant_out_dir/sysroot/usr/include/x86_64-linux-ohos/bits/{{source_file_part}}" ]
373}
374
375ohos_copy("musl_ndk_libs_arm32") {
376  deps = musl_lib_arm32
377  crt_dir = "${root_build_dir}/obj/third_party/musl/usr/lib/arm-linux-ohos"
378  sources = [
379    "${crt_dir}/Scrt1.o",
380    "${crt_dir}/crt1.o",
381    "${crt_dir}/crti.o",
382    "${crt_dir}/crtn.o",
383    "${crt_dir}/rcrt1.o",
384  ]
385  sources += [ get_label_info(deps[0], "target_out_dir") +
386               "/usr/lib/arm-linux-ohos/libm.a" ]
387  sources += [ get_label_info(deps[0], "target_out_dir") +
388               "/usr/lib/arm-linux-ohos/libdl.a" ]
389  sources += [ get_label_info(deps[0], "target_out_dir") +
390               "/usr/lib/arm-linux-ohos/libc.a" ]
391  sources += [ get_label_info(deps[0], "target_out_dir") +
392               "/usr/lib/arm-linux-ohos/libcrypt.a" ]
393  sources += [ get_label_info(deps[0], "target_out_dir") +
394               "/usr/lib/arm-linux-ohos/libpthread.a" ]
395  sources += [ get_label_info(deps[0], "target_out_dir") +
396               "/usr/lib/arm-linux-ohos/libresolv.a" ]
397  sources += [ get_label_info(deps[0], "target_out_dir") +
398               "/usr/lib/arm-linux-ohos/librt.a" ]
399  sources += [ get_label_info(deps[0], "target_out_dir") +
400               "/usr/lib/arm-linux-ohos/libutil.a" ]
401  sources += [ get_label_info(deps[0], "target_out_dir") +
402               "/usr/lib/arm-linux-ohos/libxnet.a" ]
403
404  outputs = [ "$ndk_os_irrelevant_out_dir/sysroot/usr/lib/arm-linux-ohos/{{source_file_part}}" ]
405}
406
407ohos_copy("musl_ndk_libs_aarch64") {
408  deps = musl_lib_arm64
409  sources = [ get_label_info(deps[0], "target_out_dir") +
410              "/usr/lib/aarch64-linux-ohos/Scrt1.o" ]
411  sources += [ get_label_info(deps[0], "target_out_dir") +
412               "/usr/lib/aarch64-linux-ohos/crt1.o" ]
413  sources += [ get_label_info(deps[0], "target_out_dir") +
414               "/usr/lib/aarch64-linux-ohos/crti.o" ]
415  sources += [ get_label_info(deps[0], "target_out_dir") +
416               "/usr/lib/aarch64-linux-ohos/crtn.o" ]
417  sources += [ get_label_info(deps[0], "target_out_dir") +
418               "/usr/lib/aarch64-linux-ohos/rcrt1.o" ]
419  sources += [ get_label_info(deps[0], "target_out_dir") +
420               "/usr/lib/aarch64-linux-ohos/libc.a" ]
421  sources += [ get_label_info(deps[0], "target_out_dir") +
422               "/usr/lib/aarch64-linux-ohos/libdl.a" ]
423  sources += [ get_label_info(deps[0], "target_out_dir") +
424               "/usr/lib/aarch64-linux-ohos/libm.a" ]
425  sources += [ get_label_info(deps[0], "target_out_dir") +
426               "/usr/lib/aarch64-linux-ohos/libcrypt.a" ]
427  sources += [ get_label_info(deps[0], "target_out_dir") +
428               "/usr/lib/aarch64-linux-ohos/libpthread.a" ]
429  sources += [ get_label_info(deps[0], "target_out_dir") +
430               "/usr/lib/aarch64-linux-ohos/libresolv.a" ]
431  sources += [ get_label_info(deps[0], "target_out_dir") +
432               "/usr/lib/aarch64-linux-ohos/librt.a" ]
433  sources += [ get_label_info(deps[0], "target_out_dir") +
434               "/usr/lib/aarch64-linux-ohos/libutil.a" ]
435  sources += [ get_label_info(deps[0], "target_out_dir") +
436               "/usr/lib/aarch64-linux-ohos/libxnet.a" ]
437
438  outputs = [ "$ndk_os_irrelevant_out_dir/sysroot/usr/lib/aarch64-linux-ohos/{{source_file_part}}" ]
439}
440
441ohos_copy("musl_ndk_libs_x86_64") {
442  deps = musl_lib_x86_64
443  crt_dir = "${root_build_dir}/obj/third_party/musl/usr/lib/x86_64-linux-ohos"
444  sources = [
445    "${crt_dir}/Scrt1.o",
446    "${crt_dir}/crt1.o",
447    "${crt_dir}/crti.o",
448    "${crt_dir}/crtn.o",
449    "${crt_dir}/rcrt1.o",
450  ]
451  sources += [ get_label_info(deps[0], "target_out_dir") +
452               "/usr/lib/x86_64-linux-ohos/libc.a" ]
453  sources += [ get_label_info(deps[0], "target_out_dir") +
454               "/usr/lib/x86_64-linux-ohos/libdl.a" ]
455  sources += [ get_label_info(deps[0], "target_out_dir") +
456               "/usr/lib/x86_64-linux-ohos/libm.a" ]
457  sources += [ get_label_info(deps[0], "target_out_dir") +
458               "/usr/lib/x86_64-linux-ohos/libcrypt.a" ]
459  sources += [ get_label_info(deps[0], "target_out_dir") +
460               "/usr/lib/x86_64-linux-ohos/libpthread.a" ]
461  sources += [ get_label_info(deps[0], "target_out_dir") +
462               "/usr/lib/x86_64-linux-ohos/libresolv.a" ]
463  sources += [ get_label_info(deps[0], "target_out_dir") +
464               "/usr/lib/x86_64-linux-ohos/librt.a" ]
465  sources += [ get_label_info(deps[0], "target_out_dir") +
466               "/usr/lib/x86_64-linux-ohos/libutil.a" ]
467  sources += [ get_label_info(deps[0], "target_out_dir") +
468               "/usr/lib/x86_64-linux-ohos/libxnet.a" ]
469
470  outputs = [ "$ndk_os_irrelevant_out_dir/sysroot/usr/lib/x86_64-linux-ohos/{{source_file_part}}" ]
471}
472
473ohos_ndk_copy("copy_compatible_config") {
474  dest_dir = "$ndk_os_irrelevant_out_dir"
475  sources =
476      [ "//interface/sdk_c/third_party/musl/ndk_script/compatible_config.json" ]
477  args = [ "--ignore-stale" ]
478}
479