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