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.0" 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-openssl.c", 83 "$core_code_dir/tls.c", 84 "$core_code_dir/transcode.c", 85 "$core_code_dir/usersys.c", 86 "$core_code_dir/util.c", 87] 88 89scheduler_util_generated_sources = [ "$scheduler_code_dir/util.c" ] 90 91cups_deviced_generated_sources = [ "$scheduler_code_dir/cups-deviced.c" ] 92 93cups_driverd_generated_sources = [ "$scheduler_code_dir/cups-driverd.cxx" ] 94 95cups_exec_generated_sources = [ "$scheduler_code_dir/cups-exec.c" ] 96 97cupsd_generated_sources = [ 98 "$scheduler_code_dir/auth.c", 99 "$scheduler_code_dir/banners.c", 100 "$scheduler_code_dir/cert.c", 101 "$scheduler_code_dir/classes.c", 102 "$scheduler_code_dir/client.c", 103 "$scheduler_code_dir/colorman.c", 104 "$scheduler_code_dir/conf.c", 105 "$scheduler_code_dir/dirsvc.c", 106 "$scheduler_code_dir/env.c", 107 "$scheduler_code_dir/file.c", 108 "$scheduler_code_dir/hilog-helper.c", 109 "$scheduler_code_dir/ipp.c", 110 "$scheduler_code_dir/job.c", 111 "$scheduler_code_dir/listen.c", 112 "$scheduler_code_dir/log.c", 113 "$scheduler_code_dir/main.c", 114 "$scheduler_code_dir/network.c", 115 "$scheduler_code_dir/policy.c", 116 "$scheduler_code_dir/printers.c", 117 "$scheduler_code_dir/process.c", 118 "$scheduler_code_dir/quotas.c", 119 "$scheduler_code_dir/select.c", 120 "$scheduler_code_dir/server.c", 121 "$scheduler_code_dir/statbuf.c", 122 "$scheduler_code_dir/subscriptions.c", 123 "$scheduler_code_dir/sysman.c", 124] 125 126cupsfilter_generated_sources = [ "$scheduler_code_dir/cupsfilter.c" ] 127 128ipp_generated_sources = [ "$backend_code_dir/ipp.c" ] 129 130usb_generated_sources = [ 131 "$backend_code_dir/usb.c", 132 "$backend_code_dir/usb_manager.cxx", 133] 134 135lp_generated_sources = [ "$cups_code_dir/systemv/lp.c" ] 136 137lpadmin_generated_sources = [ "$cups_code_dir/systemv/lpadmin.c" ] 138 139lpinfo_generated_sources = [ "$cups_code_dir/systemv/lpinfo.c" ] 140 141rastertopwg_generated_sources = [ "$filter_code_dir/rastertopwg.c" ] 142 143cupsmime_generated_sources = [ 144 "$scheduler_code_dir/filter.c", 145 "$scheduler_code_dir/mime.c", 146 "$scheduler_code_dir/type.c", 147] 148 149cupsimage_generated_sources = [ 150 "$core_code_dir/raster-interstub.c", 151 "$core_code_dir/raster-stubs.c", 152] 153 154backend_generated_sources = [ 155 "$backend_code_dir/ieee1284.c", 156 "$backend_code_dir/network.c", 157 "$backend_code_dir/runloop.c", 158 "$backend_code_dir/snmp-supplies.c", 159] 160 161cupsppdc_generated_sources = [ 162 "$ppdc_code_dir/ppdc-array.cxx", 163 "$ppdc_code_dir/ppdc-attr.cxx", 164 "$ppdc_code_dir/ppdc-catalog.cxx", 165 "$ppdc_code_dir/ppdc-choice.cxx", 166 "$ppdc_code_dir/ppdc-constraint.cxx", 167 "$ppdc_code_dir/ppdc-driver.cxx", 168 "$ppdc_code_dir/ppdc-file.cxx", 169 "$ppdc_code_dir/ppdc-filter.cxx", 170 "$ppdc_code_dir/ppdc-font.cxx", 171 "$ppdc_code_dir/ppdc-group.cxx", 172 "$ppdc_code_dir/ppdc-import.cxx", 173 "$ppdc_code_dir/ppdc-mediasize.cxx", 174 "$ppdc_code_dir/ppdc-message.cxx", 175 "$ppdc_code_dir/ppdc-option.cxx", 176 "$ppdc_code_dir/ppdc-profile.cxx", 177 "$ppdc_code_dir/ppdc-shared.cxx", 178 "$ppdc_code_dir/ppdc-source.cxx", 179 "$ppdc_code_dir/ppdc-string.cxx", 180 "$ppdc_code_dir/ppdc-variable.cxx", 181] 182 183ppdc_generated_sources = [ "$ppdc_code_dir/ppdc.cxx" ] 184 185mime_convs_generated_source = "$cups_code_dir/conf/mime.convs" 186mime_types_generated_source = "$cups_code_dir/conf/mime.types" 187 188action("cups_action") { 189 print("cups_action is exec") 190 script = "//third_party/cups/install.py" 191 outputs = [] 192 outputs += cups_generated_sources 193 outputs += cups_deviced_generated_sources 194 outputs += cups_driverd_generated_sources 195 outputs += cups_exec_generated_sources 196 outputs += cupsd_generated_sources 197 outputs += cupsfilter_generated_sources 198 outputs += ipp_generated_sources 199 outputs += usb_generated_sources 200 outputs += lp_generated_sources 201 outputs += lpadmin_generated_sources 202 outputs += lpinfo_generated_sources 203 outputs += rastertopwg_generated_sources 204 outputs += cupsmime_generated_sources 205 outputs += cupsimage_generated_sources 206 outputs += backend_generated_sources 207 outputs += cupsppdc_generated_sources 208 outputs += ppdc_generated_sources 209 outputs += scheduler_util_generated_sources 210 outputs += [ mime_convs_generated_source ] 211 outputs += [ mime_types_generated_source ] 212 213 inputs = [ "//third_party/cups/cups-2.4.0-source.tar.gz" ] 214 cups_path = rebase_path("${target_gen_dir}", root_build_dir) 215 cups_source_path = rebase_path("//third_party/cups", root_build_dir) 216 args = [ 217 "--gen-dir", 218 "$cups_path", 219 "--source-dir", 220 "$cups_source_path", 221 ] 222} 223 224group("third_party_cups") { 225 public_deps = [ ":cups" ] 226 deps = [ 227 ":cups-deviced", 228 ":cups-driverd", 229 ":cups-exec", 230 ":cupsd", 231 ":cupsfilter", 232 ":cupsimage", 233 ":ipp", 234 ":mime.convs", 235 ":mime.types", 236 ":rastertopwg", 237 ":usb", 238 ] 239} 240 241config("cups_config") { 242 defines = cups_defines 243 include_dirs = [ 244 "$config_dir", 245 "$cups_code_dir", 246 "$core_code_dir", 247 "//third_party/libusb", 248 "//third_party/openssl/include", 249 get_label_info(":cups_action", "target_gen_dir") + "/cups-2.4.0", 250 ] 251 252 cflags = [ 253 "-Wno-unused-function", 254 "-Wno-unused-value", 255 "-Wno-implicit-function-declaration", 256 "-Wno-int-conversion", 257 "-D_FORTIFY_SOURCE=2", 258 "-fstack-protector-all", 259 "-fdata-sections", 260 "-ffunction-sections", 261 "-fno-asynchronous-unwind-tables", 262 "-fno-unwind-tables", 263 "-Os", 264 ] 265} 266 267ohos_shared_library("cups") { 268 sources = cups_generated_sources 269 sources += cupsimage_generated_sources 270 deps = [ 271 ":cups_action", 272 "//third_party/openssl:libcrypto_shared", 273 "//third_party/openssl:libssl_shared", 274 "//third_party/zlib:libz", 275 ] 276 public_configs = [ ":cups_config" ] 277 subsystem_name = "$SUBSYSTEM_NAME" 278 part_name = "$PART_NAME" 279} 280 281ohos_shared_library("cupsimage") { 282 sources = cupsimage_generated_sources 283 deps = [ 284 ":cups_action", 285 "//third_party/cups:cups", 286 ] 287 public_configs = [ ":cups_config" ] 288 subsystem_name = "$SUBSYSTEM_NAME" 289 part_name = "$PART_NAME" 290} 291 292ohos_executable("rastertopwg") { 293 sources = rastertopwg_generated_sources 294 deps = [ 295 ":cups_action", 296 "//third_party/cups:cups", 297 ] 298 install_enable = true 299 module_install_dir = "$cups_serverbin_dir/filter" 300 public_configs = [ ":cups_config" ] 301 subsystem_name = "$SUBSYSTEM_NAME" 302 part_name = "$PART_NAME" 303} 304 305ohos_shared_library("backend") { 306 sources = backend_generated_sources 307 deps = [ 308 ":cups_action", 309 "//third_party/cups:cups", 310 ] 311 public_configs = [ ":cups_config" ] 312 subsystem_name = "$SUBSYSTEM_NAME" 313 part_name = "$PART_NAME" 314} 315 316ohos_executable("ipp") { 317 sources = ipp_generated_sources 318 deps = [ 319 ":cups_action", 320 "//third_party/cups:backend", 321 "//third_party/cups:cups", 322 ] 323 install_enable = true 324 module_install_dir = "$cups_serverbin_dir/backend" 325 public_configs = [ ":cups_config" ] 326 subsystem_name = "$SUBSYSTEM_NAME" 327 part_name = "$PART_NAME" 328} 329 330ohos_executable("usb") { 331 sources = usb_generated_sources 332 deps = [ 333 ":cups_action", 334 "//third_party/cups:backend", 335 "//third_party/cups:cups", 336 "//third_party/libusb:libusb", 337 ] 338 external_deps = [ 339 "c_utils:utils", 340 "drivers_interface_usb:libusb_proxy_1.0", 341 "hilog:libhilog", 342 "usb_manager:usbsrv_client", 343 ] 344 install_enable = true 345 module_install_dir = "$cups_serverbin_dir/backend" 346 public_configs = [ ":cups_config" ] 347 subsystem_name = "$SUBSYSTEM_NAME" 348 part_name = "$PART_NAME" 349} 350 351#end of backend 352 353ohos_executable("lpadmin") { 354 sources = lpadmin_generated_sources 355 deps = [ 356 ":cups_action", 357 "//third_party/cups:cups", 358 ] 359 install_enable = true 360 public_configs = [ ":cups_config" ] 361 subsystem_name = "$SUBSYSTEM_NAME" 362 part_name = "$PART_NAME" 363} 364 365ohos_executable("lpinfo") { 366 sources = lpinfo_generated_sources 367 deps = [ 368 ":cups_action", 369 "//third_party/cups:cups", 370 ] 371 install_enable = true 372 public_configs = [ ":cups_config" ] 373 subsystem_name = "$SUBSYSTEM_NAME" 374 part_name = "$PART_NAME" 375} 376 377ohos_executable("lp") { 378 sources = lp_generated_sources 379 deps = [ 380 ":cups_action", 381 "//third_party/cups:cups", 382 ] 383 install_enable = true 384 public_configs = [ ":cups_config" ] 385 subsystem_name = "$SUBSYSTEM_NAME" 386 part_name = "$PART_NAME" 387} 388 389#ppdc 390ohos_shared_library("cupsppdc") { 391 sources = cupsppdc_generated_sources 392 deps = [ 393 ":cups_action", 394 "//third_party/cups:cups", 395 ] 396 public_configs = [ ":cups_config" ] 397 subsystem_name = "$SUBSYSTEM_NAME" 398 part_name = "$PART_NAME" 399} 400 401ohos_executable("ppdc") { 402 sources = ppdc_generated_sources 403 deps = [ 404 ":cups_action", 405 "//third_party/cups:cups", 406 "//third_party/cups:cupsppdc", 407 ] 408 install_enable = true 409 public_configs = [ ":cups_config" ] 410 subsystem_name = "$SUBSYSTEM_NAME" 411 part_name = "$PART_NAME" 412} 413 414#end of ppdc 415 416#scheduler 417ohos_shared_library("cupsmime") { 418 sources = cupsmime_generated_sources 419 deps = [ 420 ":cups_action", 421 "//third_party/cups:cups", 422 ] 423 public_configs = [ ":cups_config" ] 424 subsystem_name = "$SUBSYSTEM_NAME" 425 part_name = "$PART_NAME" 426} 427 428ohos_executable("cupsd") { 429 sources = cupsd_generated_sources 430 deps = [ 431 ":cups_action", 432 "//third_party/cups:cups", 433 "//third_party/cups:cupsmime", 434 ] 435 install_enable = true 436 external_deps = [ "hilog:libhilog" ] 437 public_configs = [ ":cups_config" ] 438 subsystem_name = "$SUBSYSTEM_NAME" 439 part_name = "$PART_NAME" 440} 441 442ohos_executable("cupsfilter") { 443 sources = cupsfilter_generated_sources 444 deps = [ 445 ":cups_action", 446 "//third_party/cups:cups", 447 "//third_party/cups:cupsmime", 448 ] 449 install_enable = true 450 public_configs = [ ":cups_config" ] 451 subsystem_name = "$SUBSYSTEM_NAME" 452 part_name = "$PART_NAME" 453} 454 455ohos_executable("cups-deviced") { 456 sources = cups_deviced_generated_sources 457 sources += scheduler_util_generated_sources 458 deps = [ 459 ":cups_action", 460 "//third_party/cups:cups", 461 "//third_party/cups:cupsmime", 462 ] 463 install_enable = true 464 module_install_dir = "$cups_serverbin_dir/daemon" 465 public_configs = [ ":cups_config" ] 466 subsystem_name = "$SUBSYSTEM_NAME" 467 part_name = "$PART_NAME" 468} 469 470ohos_executable("cups-driverd") { 471 sources = cups_driverd_generated_sources 472 sources += scheduler_util_generated_sources 473 deps = [ 474 ":cups_action", 475 "//third_party/cups:cups", 476 "//third_party/cups:cupsppdc", 477 ] 478 install_enable = true 479 module_install_dir = "$cups_serverbin_dir/daemon" 480 public_configs = [ ":cups_config" ] 481 subsystem_name = "$SUBSYSTEM_NAME" 482 part_name = "$PART_NAME" 483} 484 485ohos_executable("cups-exec") { 486 sources = cups_exec_generated_sources 487 deps = [ ":cups_action" ] 488 install_enable = true 489 module_install_dir = "$cups_serverbin_dir/daemon" 490 public_configs = [ ":cups_config" ] 491 subsystem_name = "$SUBSYSTEM_NAME" 492 part_name = "$PART_NAME" 493} 494 495ohos_prebuilt_etc("mime.convs") { 496 source = mime_convs_generated_source 497 deps = [ ":cups_action" ] 498 relative_install_dir = "cups/share/mime" 499 subsystem_name = "$SUBSYSTEM_NAME" 500 part_name = "$PART_NAME" 501} 502 503ohos_prebuilt_etc("mime.types") { 504 source = mime_types_generated_source 505 deps = [ ":cups_action" ] 506 relative_install_dir = "cups/share/mime" 507 subsystem_name = "$SUBSYSTEM_NAME" 508 part_name = "$PART_NAME" 509} 510