• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2023 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6#     http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14import("//build/ohos.gni")
15import("./cups.gni")
16
17config_dir = "${target_gen_dir}"
18cups_code_dir = "${target_gen_dir}/cups-2.4.12"
19core_code_dir = "$cups_code_dir/cups/"
20filter_code_dir = "$cups_code_dir/filter"
21backend_code_dir = "$cups_code_dir/backend"
22ppdc_code_dir = "$cups_code_dir/ppdc"
23scheduler_code_dir = "$cups_code_dir/scheduler"
24
25SUBSYSTEM_NAME = "thirdparty"
26PART_NAME = "cups"
27
28cups_generated_sources = [
29  "$core_code_dir/adminutil.c",
30  "$core_code_dir/array.c",
31  "$core_code_dir/auth.c",
32  "$core_code_dir/backchannel.c",
33  "$core_code_dir/backend.c",
34  "$core_code_dir/debug.c",
35  "$core_code_dir/dest-job.c",
36  "$core_code_dir/dest-localization.c",
37  "$core_code_dir/dest-options.c",
38  "$core_code_dir/dest.c",
39  "$core_code_dir/dir.c",
40  "$core_code_dir/encode.c",
41  "$core_code_dir/file.c",
42  "$core_code_dir/getdevices.c",
43  "$core_code_dir/getifaddrs.c",
44  "$core_code_dir/getputfile.c",
45  "$core_code_dir/globals.c",
46  "$core_code_dir/hash.c",
47  "$core_code_dir/http-addr.c",
48  "$core_code_dir/http-addrlist.c",
49  "$core_code_dir/http-support.c",
50  "$core_code_dir/http.c",
51  "$core_code_dir/ipp-file.c",
52  "$core_code_dir/ipp-support.c",
53  "$core_code_dir/ipp-vars.c",
54  "$core_code_dir/ipp.c",
55  "$core_code_dir/langprintf.c",
56  "$core_code_dir/language.c",
57  "$core_code_dir/md5.c",
58  "$core_code_dir/md5passwd.c",
59  "$core_code_dir/notify.c",
60  "$core_code_dir/options.c",
61  "$core_code_dir/ppd-attr.c",
62  "$core_code_dir/ppd-cache.c",
63  "$core_code_dir/ppd-conflicts.c",
64  "$core_code_dir/ppd-custom.c",
65  "$core_code_dir/ppd-emit.c",
66  "$core_code_dir/ppd-localize.c",
67  "$core_code_dir/ppd-mark.c",
68  "$core_code_dir/ppd-page.c",
69  "$core_code_dir/ppd-util.c",
70  "$core_code_dir/ppd.c",
71  "$core_code_dir/pwg-media.c",
72  "$core_code_dir/raster-error.c",
73  "$core_code_dir/raster-interpret.c",
74  "$core_code_dir/raster-stream.c",
75  "$core_code_dir/request.c",
76  "$core_code_dir/sidechannel.c",
77  "$core_code_dir/snmp.c",
78  "$core_code_dir/snprintf.c",
79  "$core_code_dir/string.c",
80  "$core_code_dir/tempfile.c",
81  "$core_code_dir/thread.c",
82  "$core_code_dir/tls.c",
83  "$core_code_dir/transcode.c",
84  "$core_code_dir/usersys.c",
85  "$core_code_dir/util.c",
86]
87
88scheduler_util_generated_sources = [ "$scheduler_code_dir/util.c" ]
89
90cups_deviced_generated_sources = [ "$scheduler_code_dir/cups-deviced.c" ]
91
92cups_driverd_generated_sources = [ "$scheduler_code_dir/cups-driverd.cxx" ]
93
94cups_exec_generated_sources = [ "$scheduler_code_dir/cups-exec.c" ]
95
96cupsd_generated_sources = [
97  "$scheduler_code_dir/auth.c",
98  "$scheduler_code_dir/banners.c",
99  "$scheduler_code_dir/cert.c",
100  "$scheduler_code_dir/classes.c",
101  "$scheduler_code_dir/client.c",
102  "$scheduler_code_dir/colorman.c",
103  "$scheduler_code_dir/conf.c",
104  "$scheduler_code_dir/dirsvc.c",
105  "$scheduler_code_dir/env.c",
106  "$scheduler_code_dir/file.c",
107  "$scheduler_code_dir/hilog-helper.c",
108  "$scheduler_code_dir/ipp.c",
109  "$scheduler_code_dir/job.c",
110  "$scheduler_code_dir/listen.c",
111  "$scheduler_code_dir/log.c",
112  "$scheduler_code_dir/main.c",
113  "$scheduler_code_dir/network.c",
114  "$scheduler_code_dir/policy.c",
115  "$scheduler_code_dir/printers.c",
116  "$scheduler_code_dir/process.c",
117  "$scheduler_code_dir/quotas.c",
118  "$scheduler_code_dir/select.c",
119  "$scheduler_code_dir/server.c",
120  "$scheduler_code_dir/statbuf.c",
121  "$scheduler_code_dir/subscriptions.c",
122  "$scheduler_code_dir/sysman.c",
123]
124
125cupsfilter_generated_sources = [ "$scheduler_code_dir/cupsfilter.c" ]
126
127ipp_generated_sources = [ "$backend_code_dir/ipp.c" ]
128
129usb_generated_sources = [
130  "$backend_code_dir/usb.c",
131  "$backend_code_dir/usb_ipp_manager.cpp",
132  "$backend_code_dir/usb_manager.cxx",
133  "$backend_code_dir/usb_monitor.cpp",
134]
135
136lp_generated_sources = [ "$cups_code_dir/systemv/lp.c" ]
137
138lpadmin_generated_sources = [ "$cups_code_dir/systemv/lpadmin.c" ]
139
140lpinfo_generated_sources = [ "$cups_code_dir/systemv/lpinfo.c" ]
141
142rastertopwg_generated_sources = [ "$filter_code_dir/rastertopwg.c" ]
143
144if (cups_feature_pstops_filter) {
145  pstops_generated_sources = [
146    "$filter_code_dir/common.c",
147    "$filter_code_dir/pstops.c",
148  ]
149}
150
151cupsmime_generated_sources = [
152  "$scheduler_code_dir/filter.c",
153  "$scheduler_code_dir/mime.c",
154  "$scheduler_code_dir/type.c",
155]
156
157cupsimage_generated_sources = [
158  "$core_code_dir/raster-interstub.c",
159  "$core_code_dir/raster-stubs.c",
160]
161
162backend_generated_sources = [
163  "$backend_code_dir/ieee1284.c",
164  "$backend_code_dir/network.c",
165  "$backend_code_dir/runloop.c",
166  "$backend_code_dir/snmp-supplies.c",
167]
168
169cupsppdc_generated_sources = [
170  "$ppdc_code_dir/ppdc-array.cxx",
171  "$ppdc_code_dir/ppdc-attr.cxx",
172  "$ppdc_code_dir/ppdc-catalog.cxx",
173  "$ppdc_code_dir/ppdc-choice.cxx",
174  "$ppdc_code_dir/ppdc-constraint.cxx",
175  "$ppdc_code_dir/ppdc-driver.cxx",
176  "$ppdc_code_dir/ppdc-file.cxx",
177  "$ppdc_code_dir/ppdc-filter.cxx",
178  "$ppdc_code_dir/ppdc-font.cxx",
179  "$ppdc_code_dir/ppdc-group.cxx",
180  "$ppdc_code_dir/ppdc-import.cxx",
181  "$ppdc_code_dir/ppdc-mediasize.cxx",
182  "$ppdc_code_dir/ppdc-message.cxx",
183  "$ppdc_code_dir/ppdc-option.cxx",
184  "$ppdc_code_dir/ppdc-profile.cxx",
185  "$ppdc_code_dir/ppdc-shared.cxx",
186  "$ppdc_code_dir/ppdc-source.cxx",
187  "$ppdc_code_dir/ppdc-string.cxx",
188  "$ppdc_code_dir/ppdc-variable.cxx",
189]
190
191ppdc_generated_sources = [ "$ppdc_code_dir/ppdc.cxx" ]
192
193mime_convs_generated_source = "$cups_code_dir/conf/mime.convs"
194mime_types_generated_source = "$cups_code_dir/conf/mime.types"
195
196action("cups_action") {
197  print("cups_action is exec")
198  script = "//third_party/cups/install.py"
199  outputs = []
200  outputs += cups_generated_sources
201  outputs += cups_deviced_generated_sources
202  outputs += cups_driverd_generated_sources
203  outputs += cups_exec_generated_sources
204  outputs += cupsd_generated_sources
205  outputs += cupsfilter_generated_sources
206  outputs += ipp_generated_sources
207  outputs += usb_generated_sources
208  outputs += lp_generated_sources
209  outputs += lpadmin_generated_sources
210  outputs += lpinfo_generated_sources
211  outputs += rastertopwg_generated_sources
212  outputs += cupsmime_generated_sources
213  outputs += cupsimage_generated_sources
214  outputs += backend_generated_sources
215  outputs += cupsppdc_generated_sources
216  outputs += ppdc_generated_sources
217  outputs += scheduler_util_generated_sources
218  outputs += [ mime_convs_generated_source ]
219  outputs += [ mime_types_generated_source ]
220
221  if (cups_feature_pstops_filter) {
222    outputs += pstops_generated_sources
223  }
224
225  inputs = []
226  cups_path = rebase_path("${target_gen_dir}", root_build_dir)
227  cups_source_path = rebase_path("//third_party/cups", root_build_dir)
228  args = [
229    "--gen-dir",
230    "$cups_path",
231    "--source-dir",
232    "$cups_source_path",
233  ]
234}
235
236group("third_party_cups") {
237  public_deps = [ ":cups" ]
238  deps = [
239    ":cups-deviced",
240    ":cups-driverd",
241    ":cups-exec",
242    ":cupsd",
243    ":cupsfilter",
244    ":cupsimage",
245    ":ipp",
246    ":mime.convs",
247    ":mime.types",
248    ":rastertopwg",
249    ":usb",
250  ]
251  if (cups_feature_pstops_filter) {
252    deps += [ ":pstops" ]
253  }
254}
255
256config("cups_config") {
257  defines = cups_defines
258  include_dirs = [
259    "$config_dir",
260    "$cups_code_dir",
261    "$core_code_dir",
262    get_label_info(":cups_action", "target_gen_dir") + "/cups-2.4.12",
263  ]
264
265  cflags = [
266    "-Wno-unused-function",
267    "-Wno-unused-value",
268    "-Wno-implicit-function-declaration",
269    "-Wno-int-conversion",
270    "-D_FORTIFY_SOURCE=2",
271    "-fstack-protector-all",
272    "-fdata-sections",
273    "-ffunction-sections",
274    "-fno-asynchronous-unwind-tables",
275    "-fno-unwind-tables",
276    "-Os",
277  ]
278}
279
280ohos_shared_library("cups") {
281  sources = cups_generated_sources
282  sources += cupsimage_generated_sources
283  deps = [ ":cups_action" ]
284  external_deps = [
285    "openssl:libcrypto_shared",
286    "openssl:libssl_shared",
287    "zlib:libz",
288  ]
289  public_configs = [ ":cups_config" ]
290  subsystem_name = "$SUBSYSTEM_NAME"
291  part_name = "$PART_NAME"
292}
293
294ohos_shared_library("cupsimage") {
295  sources = cupsimage_generated_sources
296  deps = [
297    ":cups",
298    ":cups_action",
299  ]
300  public_configs = [ ":cups_config" ]
301  subsystem_name = "$SUBSYSTEM_NAME"
302  part_name = "$PART_NAME"
303}
304
305ohos_executable("rastertopwg") {
306  sources = rastertopwg_generated_sources
307  deps = [
308    ":cups",
309    ":cups_action",
310  ]
311  external_deps = [
312    "openssl:libcrypto_shared",
313  ]
314  install_enable = true
315  module_install_dir = "$cups_serverbin_dir/filter"
316  public_configs = [ ":cups_config" ]
317  subsystem_name = "$SUBSYSTEM_NAME"
318  part_name = "$PART_NAME"
319}
320
321if (cups_feature_pstops_filter) {
322  ohos_executable("pstops") {
323    sources = pstops_generated_sources
324    deps = [
325      ":cups",
326      ":cups_action",
327    ]
328    install_enable = true
329    module_install_dir = "$cups_serverbin_dir/filter"
330    public_configs = [ ":cups_config" ]
331    subsystem_name = "$SUBSYSTEM_NAME"
332    part_name = "$PART_NAME"
333  }
334}
335
336ohos_shared_library("backend") {
337  sources = backend_generated_sources
338  deps = [
339    ":cups",
340    ":cups_action",
341  ]
342  external_deps = [
343    "openssl:libcrypto_shared",
344  ]
345  public_configs = [ ":cups_config" ]
346  subsystem_name = "$SUBSYSTEM_NAME"
347  part_name = "$PART_NAME"
348}
349
350ohos_executable("ipp") {
351  sources = ipp_generated_sources
352  deps = [
353    ":backend",
354    ":cups",
355    ":cups_action",
356  ]
357  external_deps = [
358    "openssl:libcrypto_shared",
359  ]
360  install_enable = true
361  module_install_dir = "$cups_serverbin_dir/backend"
362  public_configs = [ ":cups_config" ]
363  subsystem_name = "$SUBSYSTEM_NAME"
364  part_name = "$PART_NAME"
365}
366
367ohos_executable("usb") {
368  sources = usb_generated_sources
369  deps = [
370    ":backend",
371    ":cups",
372    ":cups_action",
373  ]
374  external_deps = [
375    "c_utils:utils",
376    "drivers_interface_usb:libusb_proxy_1.0",
377    "hilog:libhilog",
378    "libusb:libusb",
379    "openssl:libcrypto_shared",
380    "openssl:libssl_shared",
381    "usb_manager:usbsrv_client",
382    "ipc:ipc_core",
383    "ipc:ipc_single",
384  ]
385  install_enable = true
386  module_install_dir = "$cups_serverbin_dir/backend"
387  public_configs = [ ":cups_config" ]
388  subsystem_name = "$SUBSYSTEM_NAME"
389  part_name = "$PART_NAME"
390}
391
392#end of backend
393
394ohos_executable("lpadmin") {
395  sources = lpadmin_generated_sources
396  deps = [
397    ":cups",
398    ":cups_action",
399  ]
400  install_enable = true
401  public_configs = [ ":cups_config" ]
402  subsystem_name = "$SUBSYSTEM_NAME"
403  part_name = "$PART_NAME"
404}
405
406ohos_executable("lpinfo") {
407  sources = lpinfo_generated_sources
408  deps = [
409    ":cups",
410    ":cups_action",
411  ]
412  install_enable = true
413  public_configs = [ ":cups_config" ]
414  subsystem_name = "$SUBSYSTEM_NAME"
415  part_name = "$PART_NAME"
416}
417
418ohos_executable("lp") {
419  sources = lp_generated_sources
420  deps = [
421    ":cups",
422    ":cups_action",
423  ]
424  install_enable = true
425  public_configs = [ ":cups_config" ]
426  subsystem_name = "$SUBSYSTEM_NAME"
427  part_name = "$PART_NAME"
428}
429
430#ppdc
431ohos_shared_library("cupsppdc") {
432  sources = cupsppdc_generated_sources
433  deps = [
434    ":cups",
435    ":cups_action",
436  ]
437  external_deps = [
438    "openssl:libcrypto_shared",
439  ]
440  public_configs = [ ":cups_config" ]
441  subsystem_name = "$SUBSYSTEM_NAME"
442  part_name = "$PART_NAME"
443}
444
445ohos_executable("ppdc") {
446  sources = ppdc_generated_sources
447  deps = [
448    ":cups",
449    ":cups_action",
450    ":cupsppdc",
451  ]
452  install_enable = true
453  public_configs = [ ":cups_config" ]
454  subsystem_name = "$SUBSYSTEM_NAME"
455  part_name = "$PART_NAME"
456}
457
458#end of ppdc
459
460#scheduler
461ohos_shared_library("cupsmime") {
462  sources = cupsmime_generated_sources
463  deps = [
464    ":cups",
465    ":cups_action",
466  ]
467  public_configs = [ ":cups_config" ]
468  subsystem_name = "$SUBSYSTEM_NAME"
469  part_name = "$PART_NAME"
470}
471
472ohos_executable("cupsd") {
473  sources = cupsd_generated_sources
474  deps = [
475    ":cups",
476    ":cups_action",
477    ":cupsmime",
478  ]
479  external_deps = [
480    "hilog:libhilog",
481    "openssl:libcrypto_shared"
482  ]
483  install_enable = true
484  public_configs = [ ":cups_config" ]
485  subsystem_name = "$SUBSYSTEM_NAME"
486  part_name = "$PART_NAME"
487}
488
489ohos_executable("cupsfilter") {
490  sources = cupsfilter_generated_sources
491  deps = [
492    ":cups",
493    ":cups_action",
494    ":cupsmime",
495  ]
496  external_deps = [
497    "openssl:libcrypto_shared",
498  ]
499  install_enable = true
500  public_configs = [ ":cups_config" ]
501  subsystem_name = "$SUBSYSTEM_NAME"
502  part_name = "$PART_NAME"
503}
504
505ohos_executable("cups-deviced") {
506  sources = cups_deviced_generated_sources
507  sources += scheduler_util_generated_sources
508  deps = [
509    ":cups",
510    ":cups_action",
511    ":cupsmime",
512  ]
513  external_deps = [
514    "openssl:libcrypto_shared",
515  ]
516  install_enable = true
517  module_install_dir = "$cups_serverbin_dir/daemon"
518  public_configs = [ ":cups_config" ]
519  subsystem_name = "$SUBSYSTEM_NAME"
520  part_name = "$PART_NAME"
521}
522
523ohos_executable("cups-driverd") {
524  sources = cups_driverd_generated_sources
525  sources += scheduler_util_generated_sources
526  deps = [
527    ":cups",
528    ":cups_action",
529    ":cupsppdc",
530  ]
531  external_deps = [
532    "openssl:libcrypto_shared",
533  ]
534  install_enable = true
535  module_install_dir = "$cups_serverbin_dir/daemon"
536  public_configs = [ ":cups_config" ]
537  subsystem_name = "$SUBSYSTEM_NAME"
538  part_name = "$PART_NAME"
539}
540
541ohos_executable("cups-exec") {
542  sources = cups_exec_generated_sources
543  deps = [ ":cups_action" ]
544  install_enable = true
545  module_install_dir = "$cups_serverbin_dir/daemon"
546  public_configs = [ ":cups_config" ]
547  subsystem_name = "$SUBSYSTEM_NAME"
548  part_name = "$PART_NAME"
549}
550
551ohos_prebuilt_etc("mime.convs") {
552  source = mime_convs_generated_source
553  deps = [ ":cups_action" ]
554  relative_install_dir = "cups/share/mime"
555  subsystem_name = "$SUBSYSTEM_NAME"
556  part_name = "$PART_NAME"
557}
558
559ohos_prebuilt_etc("mime.types") {
560  source = mime_types_generated_source
561  deps = [ ":cups_action" ]
562  relative_install_dir = "cups/share/mime"
563  subsystem_name = "$SUBSYSTEM_NAME"
564  part_name = "$PART_NAME"
565}
566