1570af302Sopenharmony_ciif (is_lite_system && current_os == "ohos") {
2570af302Sopenharmony_ci  group("sysroot_lite") {
3570af302Sopenharmony_ci    print("ohos_build_compiler:", ohos_build_compiler)
4570af302Sopenharmony_ci    print("ohos_kernel_type:", ohos_kernel_type)
5570af302Sopenharmony_ci
6570af302Sopenharmony_ci    # Mini system of liteos_a needs not prepare for build, so set "kernel_is_prebuilt is true" in
7570af302Sopenharmony_ci    # config.json to avoid it.
8570af302Sopenharmony_ci    if (!is_mini_system && !ohos_kernel_is_prebuilt) {
9570af302Sopenharmony_ci      deps = [ "scripts/build_lite:build" ]
10570af302Sopenharmony_ci    } else if (!ohos_kernel_is_prebuilt) {
11570af302Sopenharmony_ci      if (ohos_kernel_type == "liteos_m") {
12570af302Sopenharmony_ci        all_dependent_configs = [
13570af302Sopenharmony_ci          "${ohos_kernel_path}:public",
14570af302Sopenharmony_ci          "${ohos_kernel_path}:kconfig_config",
15570af302Sopenharmony_ci        ]
16570af302Sopenharmony_ci      } else if (ohos_kernel_type == "uniproton") {
17570af302Sopenharmony_ci        all_dependent_configs = [
18570af302Sopenharmony_ci          "//kernel/uniproton:os_config",
19570af302Sopenharmony_ci          "//kernel/uniproton:kconfig_config",
20570af302Sopenharmony_ci        ]
21570af302Sopenharmony_ci      }
22570af302Sopenharmony_ci    }
23570af302Sopenharmony_ci  }
24570af302Sopenharmony_ci} else {
25570af302Sopenharmony_ci  import("musl_template.gni")
26570af302Sopenharmony_ci
27570af302Sopenharmony_ci  group("musl_all") {
28570af302Sopenharmony_ci    deps = [
29570af302Sopenharmony_ci      ":musl_headers",
30570af302Sopenharmony_ci      ":soft_libs",
31570af302Sopenharmony_ci    ]
32570af302Sopenharmony_ci  }
33570af302Sopenharmony_ci
34570af302Sopenharmony_ci  if (musl_arch != "mips" && musl_arch != "riscv64") {
35570af302Sopenharmony_ci    ohos_prebuilt_etc("ld-musl-namespace-${musl_arch}-test.ini") {
36570af302Sopenharmony_ci      source = "${musl_dir}/config/ld-musl-namespace-${musl_arch}-test.ini"
37570af302Sopenharmony_ci    }
38570af302Sopenharmony_ci
39570af302Sopenharmony_ci    ohos_prebuilt_etc("ld-musl-namespace-${musl_arch}.ini") {
40570af302Sopenharmony_ci      source = "${musl_dir}/config/ld-musl-namespace-${musl_arch}.ini"
41570af302Sopenharmony_ci      install_images = [
42570af302Sopenharmony_ci        "system",
43570af302Sopenharmony_ci        "updater",
44570af302Sopenharmony_ci        "ramdisk",
45570af302Sopenharmony_ci      ]
46570af302Sopenharmony_ci    }
47570af302Sopenharmony_ci
48570af302Sopenharmony_ci    group("musl_ns_config") {
49570af302Sopenharmony_ci      deps = [
50570af302Sopenharmony_ci        ":ld-musl-namespace-${musl_arch}-test.ini",
51570af302Sopenharmony_ci        ":ld-musl-namespace-${musl_arch}.ini",
52570af302Sopenharmony_ci      ]
53570af302Sopenharmony_ci    }
54570af302Sopenharmony_ci  } else {
55570af302Sopenharmony_ci    group("musl_ns_config") {
56570af302Sopenharmony_ci      deps = []
57570af302Sopenharmony_ci    }
58570af302Sopenharmony_ci  }
59570af302Sopenharmony_ci
60570af302Sopenharmony_ci  group("musl_libs") {
61570af302Sopenharmony_ci    deps = [
62570af302Sopenharmony_ci      ":musl_headers",
63570af302Sopenharmony_ci      ":musl_sysparam",
64570af302Sopenharmony_ci      ":musl_sysparam_dac",
65570af302Sopenharmony_ci      ":soft_libs",
66570af302Sopenharmony_ci    ]
67570af302Sopenharmony_ci  }
68570af302Sopenharmony_ci
69570af302Sopenharmony_ci  ohos_prebuilt_etc("musl_sysparam") {
70570af302Sopenharmony_ci    source = "${musl_dir}/etc/musl.para"
71570af302Sopenharmony_ci    relative_install_dir = "param"
72570af302Sopenharmony_ci  }
73570af302Sopenharmony_ci
74570af302Sopenharmony_ci  ohos_prebuilt_etc("musl_sysparam_dac") {
75570af302Sopenharmony_ci    source = "${musl_dir}/etc/musl.para.dac"
76570af302Sopenharmony_ci    relative_install_dir = "param"
77570af302Sopenharmony_ci  }
78570af302Sopenharmony_ci
79570af302Sopenharmony_ci  musl_libs("soft_libs") {
80570af302Sopenharmony_ci  }
81570af302Sopenharmony_ci
82570af302Sopenharmony_ci  group("musl_headers") {
83570af302Sopenharmony_ci    deps = [
84570af302Sopenharmony_ci      ":FreeBSD_copy",
85570af302Sopenharmony_ci      ":copy_uapi",
86570af302Sopenharmony_ci      ":create_alltypes_h",
87570af302Sopenharmony_ci      ":create_syscall_h",
88570af302Sopenharmony_ci      ":create_version_h",
89570af302Sopenharmony_ci      ":musl_copy_inc_arpa",
90570af302Sopenharmony_ci      ":musl_copy_inc_bits",
91570af302Sopenharmony_ci      ":musl_copy_inc_fortify",
92570af302Sopenharmony_ci      ":musl_copy_inc_hook",
93570af302Sopenharmony_ci      ":musl_copy_inc_info",
94570af302Sopenharmony_ci      ":musl_copy_inc_net",
95570af302Sopenharmony_ci      ":musl_copy_inc_netinet",
96570af302Sopenharmony_ci      ":musl_copy_inc_netpacket",
97570af302Sopenharmony_ci      ":musl_copy_inc_root",
98570af302Sopenharmony_ci      ":musl_copy_inc_scsi",
99570af302Sopenharmony_ci      ":musl_copy_inc_sys",
100570af302Sopenharmony_ci      ":musl_copy_inc_trace",
101570af302Sopenharmony_ci      ":musl_ns_config",
102570af302Sopenharmony_ci    ]
103570af302Sopenharmony_ci  }
104570af302Sopenharmony_ci
105570af302Sopenharmony_ci  action("create_porting_src") {
106570af302Sopenharmony_ci    script = "scripts/porting.sh"
107570af302Sopenharmony_ci
108570af302Sopenharmony_ci    sources_dir = [ "//third_party/musl" ]
109570af302Sopenharmony_ci
110570af302Sopenharmony_ci    outdir = [ "${target_out_dir}/${musl_ported_dir}" ]
111570af302Sopenharmony_ci
112570af302Sopenharmony_ci    src_files = musl_src_arch_file
113570af302Sopenharmony_ci    src_files += musl_src_file
114570af302Sopenharmony_ci    src_files += musl_src_ldso
115570af302Sopenharmony_ci    src_files += musl_inc_bits_files
116570af302Sopenharmony_ci    src_files += musl_inc_arpa_files
117570af302Sopenharmony_ci    src_files += musl_inc_net_files
118570af302Sopenharmony_ci    src_files += musl_inc_netinet_files
119570af302Sopenharmony_ci    src_files += musl_inc_netpacket_files
120570af302Sopenharmony_ci    src_files += musl_inc_scsi_files
121570af302Sopenharmony_ci    src_files += musl_inc_sys_files
122570af302Sopenharmony_ci    src_files += musl_inc_fortify_files
123570af302Sopenharmony_ci    src_files += musl_inc_root_files
124570af302Sopenharmony_ci    src_files += musl_inc_info_files
125570af302Sopenharmony_ci    src_files += musl_inc_trace_files
126570af302Sopenharmony_ci
127570af302Sopenharmony_ci    src_files += [
128570af302Sopenharmony_ci      "crt/Scrt1.c",
129570af302Sopenharmony_ci      "crt/crt1.c",
130570af302Sopenharmony_ci      "crt/rcrt1.c",
131570af302Sopenharmony_ci      "tools/mkalltypes.sed",
132570af302Sopenharmony_ci      "arch/${musl_arch}/bits/alltypes.h.in",
133570af302Sopenharmony_ci      "arch/${musl_arch}/bits/syscall.h.in",
134570af302Sopenharmony_ci      "include/alltypes.h.in",
135570af302Sopenharmony_ci      "VERSION",
136570af302Sopenharmony_ci      "tools/version.sh",
137570af302Sopenharmony_ci      "tools/install.sh",
138570af302Sopenharmony_ci      "scripts/install.py",
139570af302Sopenharmony_ci      "scripts/create_alltypes.sh",
140570af302Sopenharmony_ci      "scripts/create_vesion.sh",
141570af302Sopenharmony_ci      "scripts/create_syscall.sh",
142570af302Sopenharmony_ci    ]
143570af302Sopenharmony_ci    if (musl_arch == "riscv64") {
144570af302Sopenharmony_ci      src_files += [
145570af302Sopenharmony_ci        "crt/crti.c",
146570af302Sopenharmony_ci        "crt/crtn.c",
147570af302Sopenharmony_ci      ]
148570af302Sopenharmony_ci    } else if (musl_arch == "loongarch64") {
149570af302Sopenharmony_ci      src_files += [
150570af302Sopenharmony_ci        "crt/crti.c",
151570af302Sopenharmony_ci        "crt/crtn.c",
152570af302Sopenharmony_ci      ]
153570af302Sopenharmony_ci    } else {
154570af302Sopenharmony_ci      src_files += [
155570af302Sopenharmony_ci        "crt/${musl_arch}/crti.s",
156570af302Sopenharmony_ci        "crt/${musl_arch}/crtn.s",
157570af302Sopenharmony_ci      ]
158570af302Sopenharmony_ci    }
159570af302Sopenharmony_ci
160570af302Sopenharmony_ci    args = [ "-i" ] + rebase_path(sources_dir)
161570af302Sopenharmony_ci    args += [ "-o" ] + rebase_path(outdir)
162570af302Sopenharmony_ci    args += [ "-p" ] + [ "${musl_target_os}" ]
163570af302Sopenharmony_ci
164570af302Sopenharmony_ci    foreach(i, src_files) {
165570af302Sopenharmony_ci      foreach(s, musl_src_files_ext) {
166570af302Sopenharmony_ci        if (i == s) {
167570af302Sopenharmony_ci          src_files -= [ "${s}" ]
168570af302Sopenharmony_ci        }
169570af302Sopenharmony_ci      }
170570af302Sopenharmony_ci    }
171570af302Sopenharmony_ci
172570af302Sopenharmony_ci    outputs = []
173570af302Sopenharmony_ci    foreach(s, src_files) {
174570af302Sopenharmony_ci      outputs += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
175570af302Sopenharmony_ci    }
176570af302Sopenharmony_ci
177570af302Sopenharmony_ci    foreach(s, musl_src_files_ext) {
178570af302Sopenharmony_ci      outputs += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
179570af302Sopenharmony_ci    }
180570af302Sopenharmony_ci
181570af302Sopenharmony_ci    inputs = []
182570af302Sopenharmony_ci    foreach(i, src_files) {
183570af302Sopenharmony_ci      foreach(s, musl_src_linux_files) {
184570af302Sopenharmony_ci        if (i == s) {
185570af302Sopenharmony_ci          src_files -= [ "${s}" ]
186570af302Sopenharmony_ci        }
187570af302Sopenharmony_ci      }
188570af302Sopenharmony_ci    }
189570af302Sopenharmony_ci    foreach(s, src_files) {
190570af302Sopenharmony_ci      inputs += [ "${musl_dir}/${s}" ]
191570af302Sopenharmony_ci    }
192570af302Sopenharmony_ci
193570af302Sopenharmony_ci    foreach(s, musl_src_files_ext) {
194570af302Sopenharmony_ci      inputs += [ "${musl_dir}/${s}" ]
195570af302Sopenharmony_ci    }
196570af302Sopenharmony_ci  }
197570af302Sopenharmony_ci
198570af302Sopenharmony_ci  action("create_alltypes_h") {
199570af302Sopenharmony_ci    script = "${target_out_dir}/${musl_ported_dir}/scripts/create_alltypes.sh"
200570af302Sopenharmony_ci
201570af302Sopenharmony_ci    outputs = [ "${target_out_dir}/${musl_inc_out_dir}/bits/alltypes.h" ]
202570af302Sopenharmony_ci
203570af302Sopenharmony_ci    sources = [ "${target_out_dir}/${musl_ported_dir}/tools/mkalltypes.sed" ]
204570af302Sopenharmony_ci    sources += [
205570af302Sopenharmony_ci      "${target_out_dir}/${musl_ported_dir}/arch/${musl_arch}/bits/alltypes.h.in",
206570af302Sopenharmony_ci      "${target_out_dir}/${musl_ported_dir}/include/alltypes.h.in",
207570af302Sopenharmony_ci    ]
208570af302Sopenharmony_ci
209570af302Sopenharmony_ci    args = [ "-o" ] + rebase_path(outputs, root_build_dir)
210570af302Sopenharmony_ci    args += rebase_path(sources, root_build_dir)
211570af302Sopenharmony_ci
212570af302Sopenharmony_ci    deps = [ ":create_porting_src" ]
213570af302Sopenharmony_ci  }
214570af302Sopenharmony_ci
215570af302Sopenharmony_ci  action("create_version_h") {
216570af302Sopenharmony_ci    script = "${target_out_dir}/${musl_ported_dir}/scripts/create_vesion.sh"
217570af302Sopenharmony_ci
218570af302Sopenharmony_ci    outputs = [ "${target_out_dir}/${musl_inc_out_dir}/version.h" ]
219570af302Sopenharmony_ci
220570af302Sopenharmony_ci    sources = [
221570af302Sopenharmony_ci      "${target_out_dir}/${musl_ported_dir}/VERSION",
222570af302Sopenharmony_ci      "${target_out_dir}/${musl_ported_dir}/tools/version.sh",
223570af302Sopenharmony_ci    ]
224570af302Sopenharmony_ci
225570af302Sopenharmony_ci    args = rebase_path(sources, root_build_dir)
226570af302Sopenharmony_ci    args +=
227570af302Sopenharmony_ci        [ rebase_path("${target_out_dir}/${musl_inc_out_dir}", root_build_dir) ]
228570af302Sopenharmony_ci
229570af302Sopenharmony_ci    deps = [ ":create_porting_src" ]
230570af302Sopenharmony_ci  }
231570af302Sopenharmony_ci
232570af302Sopenharmony_ci  action("create_syscall_h") {
233570af302Sopenharmony_ci    script = "${target_out_dir}/${musl_ported_dir}/scripts/create_syscall.sh"
234570af302Sopenharmony_ci
235570af302Sopenharmony_ci    outputs = [ "${target_out_dir}/${musl_inc_out_dir}/bits/syscall.h" ]
236570af302Sopenharmony_ci
237570af302Sopenharmony_ci    sources = [ "${target_out_dir}/${musl_ported_dir}/arch/${musl_arch}/bits/syscall.h.in" ]
238570af302Sopenharmony_ci
239570af302Sopenharmony_ci    args = rebase_path(sources, root_build_dir)
240570af302Sopenharmony_ci    args += rebase_path(outputs, root_build_dir)
241570af302Sopenharmony_ci
242570af302Sopenharmony_ci    deps = [ ":create_porting_src" ]
243570af302Sopenharmony_ci  }
244570af302Sopenharmony_ci
245570af302Sopenharmony_ci  # if musl_uapi_dir does not exist, then make uapi from musl_linux_kernel_dir
246570af302Sopenharmony_ci  if (exec_script("/bin/sh",
247570af302Sopenharmony_ci                  [
248570af302Sopenharmony_ci                    "-c",
249570af302Sopenharmony_ci                    "if [ ! -d " + rebase_path(musl_uapi_dir) +
250570af302Sopenharmony_ci                        " ]; then echo true; else echo false; fi",
251570af302Sopenharmony_ci                  ],
252570af302Sopenharmony_ci                  "value")) {
253570af302Sopenharmony_ci    kernel_dir = rebase_path(musl_linux_kernel_dir)
254570af302Sopenharmony_ci    kernel_out_dir = "${kernel_dir}/make_output"
255570af302Sopenharmony_ci    musl_uapi_dir = "${kernel_out_dir}/usr/include"
256570af302Sopenharmony_ci    make_uapi_cmd = "rm -rf ${musl_uapi_dir}"
257570af302Sopenharmony_ci    make_uapi_cmd += " && make -C ${kernel_dir} -sj headers O=${kernel_out_dir} ARCH=${target_cpu}"
258570af302Sopenharmony_ci    make_uapi_cmd += " && cp -f ${kernel_dir}/drivers/staging/android/uapi/ashmem.h ${musl_uapi_dir}/linux/ashmem.h"
259570af302Sopenharmony_ci    make_uapi_cmd += " && sed -i '/#define _INPUT_H/i#define _UAPI_INPUT_H' ${musl_uapi_dir}/linux/input.h"
260570af302Sopenharmony_ci    make_uapi_cmd += " && sed -i '/struct __kernel_sockaddr_storage/i#define sockaddr_storage __kernel_sockaddr_storage' ${musl_uapi_dir}/linux/socket.h"
261570af302Sopenharmony_ci    args_make_uapi = [ "-c" ]
262570af302Sopenharmony_ci    args_make_uapi += [ make_uapi_cmd ]
263570af302Sopenharmony_ci    exec_script("/bin/sh", args_make_uapi, "value")
264570af302Sopenharmony_ci    uapi_from = "make"
265570af302Sopenharmony_ci  } else {
266570af302Sopenharmony_ci    uapi_from = "local"
267570af302Sopenharmony_ci  }
268570af302Sopenharmony_ci
269570af302Sopenharmony_ci  uapi_full_path = rebase_path(musl_uapi_dir)
270570af302Sopenharmony_ci  arguments_uapi = [ "-c" ]
271570af302Sopenharmony_ci
272570af302Sopenharmony_ci  # exclude these files because they need special treatment
273570af302Sopenharmony_ci  if (uapi_from == "make") {
274570af302Sopenharmony_ci    exclude_files = "^asm\$|^scsi\$"
275570af302Sopenharmony_ci  } else {
276570af302Sopenharmony_ci    exclude_files = "^asm-arm\$|^asm-arm64\$|^scsi\$"
277570af302Sopenharmony_ci  }
278570af302Sopenharmony_ci
279570af302Sopenharmony_ci  arguments_uapi +=
280570af302Sopenharmony_ci      [ "ls ${uapi_full_path} | grep -Ev " + "\"" + "${exclude_files}" + "\"" ]
281570af302Sopenharmony_ci  uspi_files = exec_script("/bin/sh", arguments_uapi, "list lines")
282570af302Sopenharmony_ci
283570af302Sopenharmony_ci  # Generate a copy target for each file
284570af302Sopenharmony_ci  foreach(file, uspi_files) {
285570af302Sopenharmony_ci    copy("copy_uapi_${file}") {
286570af302Sopenharmony_ci      sources = [ "${musl_uapi_dir}/${file}" ]
287570af302Sopenharmony_ci      outputs = [ "${target_out_dir}/${musl_inc_out_dir}/${file}" ]
288570af302Sopenharmony_ci    }
289570af302Sopenharmony_ci  }
290570af302Sopenharmony_ci
291570af302Sopenharmony_ci  group("copy_uapi_scsi") {
292570af302Sopenharmony_ci    deps = []
293570af302Sopenharmony_ci    sources = []
294570af302Sopenharmony_ci    outputs = []
295570af302Sopenharmony_ci    uapi_scsi_dir = rebase_path("${musl_uapi_dir}/scsi")
296570af302Sopenharmony_ci    arguments_scsi = [ "-c" ]
297570af302Sopenharmony_ci    arguments_scsi += [ "ls ${uapi_scsi_dir}" ]
298570af302Sopenharmony_ci    uapi_scsi_files = exec_script("/bin/sh", arguments_scsi, "list lines")
299570af302Sopenharmony_ci
300570af302Sopenharmony_ci    # Generate a copy target for each file in scsi dir to avoid being influenced by musl_copy_inc_scsi output
301570af302Sopenharmony_ci    foreach(file, uapi_scsi_files) {
302570af302Sopenharmony_ci      copy("copy_uapi_scsi_${file}") {
303570af302Sopenharmony_ci        sources += [ "${musl_uapi_dir}/scsi/${file}" ]
304570af302Sopenharmony_ci        outputs += [ "${target_out_dir}/${musl_inc_out_dir}/scsi/${file}" ]
305570af302Sopenharmony_ci      }
306570af302Sopenharmony_ci      deps += [ ":copy_uapi_scsi_${file}" ]
307570af302Sopenharmony_ci    }
308570af302Sopenharmony_ci  }
309570af302Sopenharmony_ci
310570af302Sopenharmony_ci  copy("copy_uapi_asm") {
311570af302Sopenharmony_ci    if (uapi_from == "local") {
312570af302Sopenharmony_ci      if ("${musl_arch}" == "arm") {
313570af302Sopenharmony_ci        file_name = "asm-arm"
314570af302Sopenharmony_ci      } else if ("${musl_arch}" == "riscv64") {
315570af302Sopenharmony_ci        file_name = "asm-riscv"
316570af302Sopenharmony_ci      } else if ("${musl_arch}" == "loongarch64") {
317570af302Sopenharmony_ci        file_name = "asm-loongarch"
318570af302Sopenharmony_ci      } else {  # aarch64 and x86_64 use same file
319570af302Sopenharmony_ci        file_name = "asm-arm64"
320570af302Sopenharmony_ci      }
321570af302Sopenharmony_ci      sources = [ "${musl_uapi_dir}/${file_name}/asm" ]
322570af302Sopenharmony_ci    } else {
323570af302Sopenharmony_ci      sources = [ "${musl_uapi_dir}/asm" ]
324570af302Sopenharmony_ci    }
325570af302Sopenharmony_ci    outputs = [ "${target_out_dir}/${musl_inc_out_dir}/asm" ]
326570af302Sopenharmony_ci  }
327570af302Sopenharmony_ci
328570af302Sopenharmony_ci  group("copy_uapi") {
329570af302Sopenharmony_ci    deps = [ ":copy_uapi_scsi" ]
330570af302Sopenharmony_ci
331570af302Sopenharmony_ci    # We need do different processing for asm according to the source of uapi
332570af302Sopenharmony_ci    deps += [ ":copy_uapi_asm" ]
333570af302Sopenharmony_ci    foreach(file, uspi_files) {
334570af302Sopenharmony_ci      deps += [ ":copy_uapi_${file}" ]
335570af302Sopenharmony_ci    }
336570af302Sopenharmony_ci  }
337570af302Sopenharmony_ci
338570af302Sopenharmony_ci  copy("musl_copy_inc_bits") {
339570af302Sopenharmony_ci    sources = []
340570af302Sopenharmony_ci    sources_orig = musl_inc_bits_files
341570af302Sopenharmony_ci    foreach(s, sources_orig) {
342570af302Sopenharmony_ci      sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
343570af302Sopenharmony_ci    }
344570af302Sopenharmony_ci    outputs =
345570af302Sopenharmony_ci        [ "${target_out_dir}/${musl_inc_out_dir}/bits/{{source_file_part}}" ]
346570af302Sopenharmony_ci    deps = [ ":create_porting_src" ]
347570af302Sopenharmony_ci  }
348570af302Sopenharmony_ci
349570af302Sopenharmony_ci  copy("musl_copy_inc_arpa") {
350570af302Sopenharmony_ci    sources = []
351570af302Sopenharmony_ci    sources_orig = musl_inc_arpa_files
352570af302Sopenharmony_ci    foreach(s, sources_orig) {
353570af302Sopenharmony_ci      sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
354570af302Sopenharmony_ci    }
355570af302Sopenharmony_ci    outputs =
356570af302Sopenharmony_ci        [ "${target_out_dir}/${musl_inc_out_dir}/arpa/{{source_file_part}}" ]
357570af302Sopenharmony_ci    deps = [ ":create_porting_src" ]
358570af302Sopenharmony_ci  }
359570af302Sopenharmony_ci
360570af302Sopenharmony_ci  copy("musl_copy_inc_net") {
361570af302Sopenharmony_ci    sources = []
362570af302Sopenharmony_ci    sources_orig = musl_inc_net_files
363570af302Sopenharmony_ci    foreach(s, sources_orig) {
364570af302Sopenharmony_ci      sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
365570af302Sopenharmony_ci    }
366570af302Sopenharmony_ci    outputs =
367570af302Sopenharmony_ci        [ "${target_out_dir}/${musl_inc_out_dir}/net/{{source_file_part}}" ]
368570af302Sopenharmony_ci    deps = [ ":create_porting_src" ]
369570af302Sopenharmony_ci  }
370570af302Sopenharmony_ci
371570af302Sopenharmony_ci  copy("musl_copy_inc_netinet") {
372570af302Sopenharmony_ci    sources = []
373570af302Sopenharmony_ci    sources_orig = musl_inc_netinet_files
374570af302Sopenharmony_ci    foreach(s, sources_orig) {
375570af302Sopenharmony_ci      sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
376570af302Sopenharmony_ci    }
377570af302Sopenharmony_ci    outputs =
378570af302Sopenharmony_ci        [ "${target_out_dir}/${musl_inc_out_dir}/netinet/{{source_file_part}}" ]
379570af302Sopenharmony_ci    deps = [ ":create_porting_src" ]
380570af302Sopenharmony_ci  }
381570af302Sopenharmony_ci
382570af302Sopenharmony_ci  copy("musl_copy_inc_netpacket") {
383570af302Sopenharmony_ci    sources = []
384570af302Sopenharmony_ci    sources_orig = musl_inc_netpacket_files
385570af302Sopenharmony_ci    foreach(s, sources_orig) {
386570af302Sopenharmony_ci      sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
387570af302Sopenharmony_ci    }
388570af302Sopenharmony_ci    outputs = [
389570af302Sopenharmony_ci      "${target_out_dir}/${musl_inc_out_dir}/netpacket/{{source_file_part}}",
390570af302Sopenharmony_ci    ]
391570af302Sopenharmony_ci    deps = [ ":create_porting_src" ]
392570af302Sopenharmony_ci  }
393570af302Sopenharmony_ci
394570af302Sopenharmony_ci  copy("musl_copy_inc_scsi") {
395570af302Sopenharmony_ci    sources = []
396570af302Sopenharmony_ci    sources_orig = musl_inc_scsi_files
397570af302Sopenharmony_ci    foreach(s, sources_orig) {
398570af302Sopenharmony_ci      sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
399570af302Sopenharmony_ci    }
400570af302Sopenharmony_ci    outputs =
401570af302Sopenharmony_ci        [ "${target_out_dir}/${musl_inc_out_dir}/scsi/{{source_file_part}}" ]
402570af302Sopenharmony_ci    deps = [ ":create_porting_src" ]
403570af302Sopenharmony_ci  }
404570af302Sopenharmony_ci
405570af302Sopenharmony_ci  copy("musl_copy_inc_sys") {
406570af302Sopenharmony_ci    sources = []
407570af302Sopenharmony_ci    sources_orig = musl_inc_sys_files
408570af302Sopenharmony_ci    foreach(s, sources_orig) {
409570af302Sopenharmony_ci      sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
410570af302Sopenharmony_ci    }
411570af302Sopenharmony_ci    outputs =
412570af302Sopenharmony_ci        [ "${target_out_dir}/${musl_inc_out_dir}/sys/{{source_file_part}}" ]
413570af302Sopenharmony_ci    deps = [ ":create_porting_src" ]
414570af302Sopenharmony_ci  }
415570af302Sopenharmony_ci
416570af302Sopenharmony_ci  copy("musl_copy_inc_trace") {
417570af302Sopenharmony_ci    sources = []
418570af302Sopenharmony_ci    sources_orig = musl_inc_trace_files
419570af302Sopenharmony_ci    foreach(s, sources_orig) {
420570af302Sopenharmony_ci      sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
421570af302Sopenharmony_ci    }
422570af302Sopenharmony_ci    outputs =
423570af302Sopenharmony_ci        [ "${target_out_dir}/${musl_inc_out_dir}/trace/{{source_file_part}}" ]
424570af302Sopenharmony_ci    deps = [ ":create_porting_src" ]
425570af302Sopenharmony_ci  }
426570af302Sopenharmony_ci
427570af302Sopenharmony_ci  copy("musl_copy_inc_info") {
428570af302Sopenharmony_ci    sources = []
429570af302Sopenharmony_ci    sources_orig = musl_inc_info_files
430570af302Sopenharmony_ci    foreach(s, sources_orig) {
431570af302Sopenharmony_ci      sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
432570af302Sopenharmony_ci    }
433570af302Sopenharmony_ci    outputs =
434570af302Sopenharmony_ci        [ "${target_out_dir}/${musl_inc_out_dir}/info/{{source_file_part}}" ]
435570af302Sopenharmony_ci    deps = [ ":create_porting_src" ]
436570af302Sopenharmony_ci  }
437570af302Sopenharmony_ci
438570af302Sopenharmony_ci  copy("musl_copy_inc_fortify") {
439570af302Sopenharmony_ci    sources = []
440570af302Sopenharmony_ci    sources_orig = musl_inc_fortify_files
441570af302Sopenharmony_ci    foreach(s, sources_orig) {
442570af302Sopenharmony_ci      sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
443570af302Sopenharmony_ci    }
444570af302Sopenharmony_ci    outputs =
445570af302Sopenharmony_ci        [ "${target_out_dir}/${musl_inc_out_dir}/fortify/{{source_file_part}}" ]
446570af302Sopenharmony_ci    deps = [ ":create_porting_src" ]
447570af302Sopenharmony_ci  }
448570af302Sopenharmony_ci
449570af302Sopenharmony_ci  copy("musl_copy_inc_root") {
450570af302Sopenharmony_ci    sources = []
451570af302Sopenharmony_ci    sources_orig = musl_inc_root_files
452570af302Sopenharmony_ci    foreach(s, sources_orig) {
453570af302Sopenharmony_ci      sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
454570af302Sopenharmony_ci    }
455570af302Sopenharmony_ci    outputs = [ "${target_out_dir}/${musl_inc_out_dir}/{{source_file_part}}" ]
456570af302Sopenharmony_ci    deps = [ ":create_porting_src" ]
457570af302Sopenharmony_ci  }
458570af302Sopenharmony_ci
459570af302Sopenharmony_ci  copy("musl_copy_inc_hook") {
460570af302Sopenharmony_ci    sources = musl_inc_hook_files
461570af302Sopenharmony_ci    outputs = [ "${target_out_dir}/${musl_inc_out_dir}/{{source_file_part}}" ]
462570af302Sopenharmony_ci  }
463570af302Sopenharmony_ci
464570af302Sopenharmony_ci  group("FreeBSD_copy") {
465570af302Sopenharmony_ci    deps = [
466570af302Sopenharmony_ci      ":FreeBSD_headers",
467570af302Sopenharmony_ci      ":FreeBSD_sys_headers",
468570af302Sopenharmony_ci    ]
469570af302Sopenharmony_ci  }
470570af302Sopenharmony_ci
471570af302Sopenharmony_ci  copy("FreeBSD_headers") {
472570af302Sopenharmony_ci    sources = freebsd_headers
473570af302Sopenharmony_ci    outputs = [ "${target_out_dir}/${musl_inc_out_dir}/{{source_file_part}}" ]
474570af302Sopenharmony_ci    deps = [ ":create_porting_src" ]
475570af302Sopenharmony_ci  }
476570af302Sopenharmony_ci
477570af302Sopenharmony_ci  copy("FreeBSD_sys_headers") {
478570af302Sopenharmony_ci    sources = freebsd_sys_headers
479570af302Sopenharmony_ci    outputs =
480570af302Sopenharmony_ci        [ "${target_out_dir}/${musl_inc_out_dir}/sys/{{source_file_part}}" ]
481570af302Sopenharmony_ci    deps = [ ":create_porting_src" ]
482570af302Sopenharmony_ci  }
483570af302Sopenharmony_ci
484570af302Sopenharmony_ci  group("libctest") {
485570af302Sopenharmony_ci    testonly = true
486570af302Sopenharmony_ci    deps = [ "libc-test:musl_libc_test" ]
487570af302Sopenharmony_ci  }
488570af302Sopenharmony_ci
489570af302Sopenharmony_ci  group("benchmark-musl") {
490570af302Sopenharmony_ci    testonly = true
491570af302Sopenharmony_ci    deps = [ "Benchmark/musl:benchmark_musl_group" ]
492570af302Sopenharmony_ci  }
493570af302Sopenharmony_ci
494570af302Sopenharmony_ci  static_and_shared_libs_template("static") {
495570af302Sopenharmony_ci    musl_use_flto = false
496570af302Sopenharmony_ci    musl_use_gwp_asan = false
497570af302Sopenharmony_ci  }
498570af302Sopenharmony_ci
499570af302Sopenharmony_ci  static_and_shared_libs_template("shared") {
500570af302Sopenharmony_ci    musl_use_flto = true
501570af302Sopenharmony_ci  }
502570af302Sopenharmony_ci}
503