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