• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1import("musl_template.gni")
2
3musl_abi_target = "soft"
4
5group("musl_all") {
6  deps = [
7    ":a7_hard_neon_libs",
8    ":a7_soft_libs",
9    ":a7_softfp_neon_libs",
10    ":musl_headers",
11    ":soft_libs",
12  ]
13}
14
15group("musl_libs") {
16  deps = [
17    ":${musl_abi_target}_libs",
18    ":musl_headers",
19  ]
20}
21
22musl_libs("soft_libs") {
23  target_abi = "soft"
24}
25
26musl_libs("a7_soft_libs") {
27  target_abi = "a7_soft"
28}
29
30musl_libs("a7_softfp_neon_libs") {
31  target_abi = "a7_softfp_neon-vfpv4"
32}
33
34musl_libs("a7_hard_neon_libs") {
35  target_abi = "a7_hard_neon-vfpv4"
36}
37
38group("musl_headers") {
39  deps = [
40    ":copy_uapi",
41    ":create_alltypes_h",
42    ":create_syscall_h",
43    ":create_version_h",
44    ":musl_copy_inc_arpa",
45    ":musl_copy_inc_bits",
46    ":musl_copy_inc_hook",
47    ":musl_copy_inc_net",
48    ":musl_copy_inc_netinet",
49    ":musl_copy_inc_netpacket",
50    ":musl_copy_inc_root",
51    ":musl_copy_inc_scsi",
52    ":musl_copy_inc_sys",
53  ]
54}
55
56action("create_porting_src") {
57  script = "scripts/porting.sh"
58
59  sources = [ "//third_party/musl" ]
60
61  outdir = [ "${target_out_dir}/${musl_ported_dir}" ]
62
63  src_files = musl_src_arch_file
64  src_files += musl_src_file
65  src_files += musl_src_ldso
66  src_files += musl_inc_bits_files
67  src_files += musl_inc_arpa_files
68  src_files += musl_inc_net_files
69  src_files += musl_inc_netinet_files
70  src_files += musl_inc_netpacket_files
71  src_files += musl_inc_scsi_files
72  src_files += musl_inc_sys_files
73  src_files += musl_inc_root_files
74  src_files += [
75    "crt/${musl_arch}/crti.s",
76    "crt/${musl_arch}/crtn.s",
77    "crt/Scrt1.c",
78    "crt/crt1.c",
79    "crt/rcrt1.c",
80    "tools/mkalltypes.sed",
81    "arch/${musl_arch}/bits/alltypes.h.in",
82    "arch/${musl_arch}/bits/syscall.h.in",
83    "include/alltypes.h.in",
84    "VERSION",
85    "tools/version.sh",
86    "tools/install.sh",
87    "scripts/install.py",
88    "scripts/create_alltypes.sh",
89    "scripts/create_vesion.sh",
90    "scripts/create_syscall.sh",
91  ]
92
93  outputs = []
94  foreach(s, src_files) {
95    outputs += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
96  }
97
98  args = [ "-i" ] + rebase_path(sources)
99  args += [ "-o" ] + rebase_path(outdir)
100  args += [ "-p" ] + [ "${musl_target_os}" ]
101
102  foreach(i, src_files) {
103    foreach(s, musl_src_porting_file) {
104      if (i == s) {
105        src_files -= [ "${s}" ]
106      }
107    }
108  }
109
110  inputs = []
111  foreach(s, src_files) {
112    inputs += [ "${musl_dir}/${s}" ]
113  }
114
115  foreach(s, musl_src_porting_file) {
116    inputs += [ "${musl_porting_dir}/${s}" ]
117  }
118}
119
120action("create_alltypes_h") {
121  script = "${target_out_dir}/${musl_ported_dir}/scripts/create_alltypes.sh"
122
123  outputs = [ "${target_out_dir}/${musl_inc_out_dir}/bits/alltypes.h" ]
124
125  sources = [ "${target_out_dir}/${musl_ported_dir}/tools/mkalltypes.sed" ]
126  sources += [
127    "${target_out_dir}/${musl_ported_dir}/arch/${musl_arch}/bits/alltypes.h.in",
128    "${target_out_dir}/${musl_ported_dir}/include/alltypes.h.in",
129  ]
130
131  args = [ "-o" ] + rebase_path(outputs, root_build_dir)
132  args += rebase_path(sources, root_build_dir)
133
134  deps = [ ":create_porting_src" ]
135}
136
137action("create_version_h") {
138  script = "${target_out_dir}/${musl_ported_dir}/scripts/create_vesion.sh"
139
140  outputs = [ "${target_out_dir}/${musl_inc_out_dir}/version.h" ]
141
142  sources = [
143    "${target_out_dir}/${musl_ported_dir}/VERSION",
144    "${target_out_dir}/${musl_ported_dir}/tools/version.sh",
145  ]
146
147  args = rebase_path(sources, root_build_dir)
148  args +=
149      [ rebase_path("${target_out_dir}/${musl_inc_out_dir}", root_build_dir) ]
150
151  deps = [ ":create_porting_src" ]
152}
153
154action("create_syscall_h") {
155  script = "${target_out_dir}/${musl_ported_dir}/scripts/create_syscall.sh"
156
157  outputs = [ "${target_out_dir}/${musl_inc_out_dir}/bits/syscall.h" ]
158
159  sources = [
160    "${target_out_dir}/${musl_ported_dir}/arch/${musl_arch}/bits/syscall.h.in",
161  ]
162
163  args = rebase_path(sources, root_build_dir)
164  args += rebase_path(outputs, root_build_dir)
165
166  deps = [ ":create_porting_src" ]
167}
168
169action("copy_uapi") {
170  outputs = [ "${target_out_dir}/${musl_inc_out_dir}/linux" ]
171  script = "scripts/copy_uapi.sh"
172  args = [ "-i" ] + [ rebase_path("${uapi_dir}") ]
173  args += [ "-o" ] + [ rebase_path("${target_out_dir}/${musl_inc_out_dir}") ]
174  args += [ "-t" ] + [ "${musl_arch}" ]
175}
176
177copy("musl_copy_inc_bits") {
178  sources = []
179  sources_orig = musl_inc_bits_files
180  foreach(s, sources_orig) {
181    sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
182  }
183  outputs =
184      [ "${target_out_dir}/${musl_inc_out_dir}/bits/{{source_file_part}}" ]
185  deps = [ ":create_porting_src" ]
186}
187
188copy("musl_copy_inc_arpa") {
189  sources = []
190  sources_orig = musl_inc_arpa_files
191  foreach(s, sources_orig) {
192    sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
193  }
194  outputs =
195      [ "${target_out_dir}/${musl_inc_out_dir}/arpa/{{source_file_part}}" ]
196  deps = [ ":create_porting_src" ]
197}
198
199copy("musl_copy_inc_net") {
200  sources = []
201  sources_orig = musl_inc_net_files
202  foreach(s, sources_orig) {
203    sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
204  }
205  outputs = [ "${target_out_dir}/${musl_inc_out_dir}/net/{{source_file_part}}" ]
206  deps = [ ":create_porting_src" ]
207}
208
209copy("musl_copy_inc_netinet") {
210  sources = []
211  sources_orig = musl_inc_netinet_files
212  foreach(s, sources_orig) {
213    sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
214  }
215  outputs =
216      [ "${target_out_dir}/${musl_inc_out_dir}/netinet/{{source_file_part}}" ]
217  deps = [ ":create_porting_src" ]
218}
219
220copy("musl_copy_inc_netpacket") {
221  sources = []
222  sources_orig = musl_inc_netpacket_files
223  foreach(s, sources_orig) {
224    sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
225  }
226  outputs =
227      [ "${target_out_dir}/${musl_inc_out_dir}/netpacket/{{source_file_part}}" ]
228  deps = [ ":create_porting_src" ]
229}
230
231copy("musl_copy_inc_scsi") {
232  sources = []
233  sources_orig = musl_inc_scsi_files
234  foreach(s, sources_orig) {
235    sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
236  }
237  outputs =
238      [ "${target_out_dir}/${musl_inc_out_dir}/scsi/{{source_file_part}}" ]
239  deps = [ ":create_porting_src" ]
240}
241
242copy("musl_copy_inc_sys") {
243  sources = []
244  sources_orig = musl_inc_sys_files
245  foreach(s, sources_orig) {
246    sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
247  }
248  outputs = [ "${target_out_dir}/${musl_inc_out_dir}/sys/{{source_file_part}}" ]
249  deps = [ ":create_porting_src" ]
250}
251
252copy("musl_copy_inc_root") {
253  sources = []
254  sources_orig = musl_inc_root_files
255  foreach(s, sources_orig) {
256    sources += [ "${target_out_dir}/${musl_ported_dir}/${s}" ]
257  }
258  outputs = [ "${target_out_dir}/${musl_inc_out_dir}/{{source_file_part}}" ]
259  deps = [ ":create_porting_src" ]
260}
261
262copy("musl_copy_inc_hook") {
263  sources = musl_inc_hook_files
264  outputs = [ "${target_out_dir}/${musl_inc_out_dir}/{{source_file_part}}" ]
265}
266
267group("libctest") {
268  testonly = true
269  deps = [ "libc-test:musl_libc_test" ]
270}
271