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