15bec5421Sopenharmony_ci# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved.
25bec5421Sopenharmony_ci
35bec5421Sopenharmony_ciimport("//build/ohos.gni")
45bec5421Sopenharmony_ci
55bec5421Sopenharmony_ciaction("libpng_action") {
65bec5421Sopenharmony_ci  script = "//third_party/libpng/install.py"
75bec5421Sopenharmony_ci  outputs = [
85bec5421Sopenharmony_ci    "${target_gen_dir}/libpng-1.6.38/png.c",
95bec5421Sopenharmony_ci    "${target_gen_dir}/libpng-1.6.38/pngerror.c",
105bec5421Sopenharmony_ci    "${target_gen_dir}/libpng-1.6.38/pngget.c",
115bec5421Sopenharmony_ci    "${target_gen_dir}/libpng-1.6.38/pngmem.c",
125bec5421Sopenharmony_ci    "${target_gen_dir}/libpng-1.6.38/pngpread.c",
135bec5421Sopenharmony_ci    "${target_gen_dir}/libpng-1.6.38/pngread.c",
145bec5421Sopenharmony_ci    "${target_gen_dir}/libpng-1.6.38/pngrio.c",
155bec5421Sopenharmony_ci    "${target_gen_dir}/libpng-1.6.38/pngrtran.c",
165bec5421Sopenharmony_ci    "${target_gen_dir}/libpng-1.6.38/pngrutil.c",
175bec5421Sopenharmony_ci    "${target_gen_dir}/libpng-1.6.38/pngset.c",
185bec5421Sopenharmony_ci    "${target_gen_dir}/libpng-1.6.38/pngtrans.c",
195bec5421Sopenharmony_ci    "${target_gen_dir}/libpng-1.6.38/pngwio.c",
205bec5421Sopenharmony_ci    "${target_gen_dir}/libpng-1.6.38/pngwrite.c",
215bec5421Sopenharmony_ci    "${target_gen_dir}/libpng-1.6.38/pngwtran.c",
225bec5421Sopenharmony_ci    "${target_gen_dir}/libpng-1.6.38/pngwutil.c",
235bec5421Sopenharmony_ci    "${target_gen_dir}/libpng-1.6.38/arm/arm_init.c",
245bec5421Sopenharmony_ci    "${target_gen_dir}/libpng-1.6.38/arm/filter_neon_intrinsics.c",
255bec5421Sopenharmony_ci    "${target_gen_dir}/libpng-1.6.38/arm/palette_neon_intrinsics.c",
265bec5421Sopenharmony_ci  ]
275bec5421Sopenharmony_ci
285bec5421Sopenharmony_ci  inputs = [ "//third_party/libpng/libpng-1.6.38.tar.gz" ]
295bec5421Sopenharmony_ci  libpng_path = rebase_path("${target_gen_dir}", root_build_dir)
305bec5421Sopenharmony_ci  libpng_source_path = rebase_path("//third_party/libpng", root_build_dir)
315bec5421Sopenharmony_ci  args = [
325bec5421Sopenharmony_ci    "--gen-dir",
335bec5421Sopenharmony_ci    "$libpng_path",
345bec5421Sopenharmony_ci    "--source-dir",
355bec5421Sopenharmony_ci    "$libpng_source_path",
365bec5421Sopenharmony_ci  ]
375bec5421Sopenharmony_ci}
385bec5421Sopenharmony_ci
395bec5421Sopenharmony_ciif (defined(ohos_lite)) {
405bec5421Sopenharmony_ci  import("//build/lite/config/component/lite_component.gni")
415bec5421Sopenharmony_ci
425bec5421Sopenharmony_ci  config("libpng_config") {
435bec5421Sopenharmony_ci    include_dirs = [ "${target_gen_dir}/libpng-1.6.38/" ]
445bec5421Sopenharmony_ci  }
455bec5421Sopenharmony_ci
465bec5421Sopenharmony_ci  libpng_source = get_target_outputs(":libpng_action")
475bec5421Sopenharmony_ci
485bec5421Sopenharmony_ci  lite_library("libpng") {
495bec5421Sopenharmony_ci    if (ohos_kernel_type == "liteos_m") {
505bec5421Sopenharmony_ci      target_type = "static_library"
515bec5421Sopenharmony_ci      deps = [ "//build/lite/config/component/zlib:zlib_static" ]
525bec5421Sopenharmony_ci    } else {
535bec5421Sopenharmony_ci      target_type = "shared_library"
545bec5421Sopenharmony_ci      deps = [ "//build/lite/config/component/zlib:zlib_shared" ]
555bec5421Sopenharmony_ci    }
565bec5421Sopenharmony_ci    deps += [ ":libpng_action" ]
575bec5421Sopenharmony_ci    if (defined(board_toolchain_type) && board_toolchain_type == "iccarm") {
585bec5421Sopenharmony_ci      cflags = [
595bec5421Sopenharmony_ci        "--diag_suppress",
605bec5421Sopenharmony_ci        "Pa082,Pa084",
615bec5421Sopenharmony_ci      ]
625bec5421Sopenharmony_ci      cflags_cc = cflags
635bec5421Sopenharmony_ci    }
645bec5421Sopenharmony_ci    sources = libpng_source
655bec5421Sopenharmony_ci    public_configs = [ ":libpng_config" ]
665bec5421Sopenharmony_ci  }
675bec5421Sopenharmony_ci} else {
685bec5421Sopenharmony_ci  import("//build/ohos.gni")
695bec5421Sopenharmony_ci
705bec5421Sopenharmony_ci  config("libpng_config") {
715bec5421Sopenharmony_ci    include_dirs = [ "${target_gen_dir}/libpng-1.6.38/" ]
725bec5421Sopenharmony_ci  }
735bec5421Sopenharmony_ci
745bec5421Sopenharmony_ci  config("libpng_wno_config") {
755bec5421Sopenharmony_ci    cflags = [ "-Wno-implicit-fallthrough" ]
765bec5421Sopenharmony_ci    if (target_platform == "pc") {
775bec5421Sopenharmony_ci      if (is_ohos && is_clang &&
785bec5421Sopenharmony_ci          (target_cpu == "arm" || target_cpu == "arm64")) {
795bec5421Sopenharmony_ci        ldflags = [ "-Wl,-Bsymbolic" ]
805bec5421Sopenharmony_ci        defines = [ "PNG_ARM_NEON" ]
815bec5421Sopenharmony_ci      }
825bec5421Sopenharmony_ci    }
835bec5421Sopenharmony_ci  }
845bec5421Sopenharmony_ci
855bec5421Sopenharmony_ci  config("libpng_wno_config_static") {
865bec5421Sopenharmony_ci    if (target_platform == "pc") {
875bec5421Sopenharmony_ci      if (is_ohos && is_clang &&
885bec5421Sopenharmony_ci          (target_cpu == "arm" || target_cpu == "arm64")) {
895bec5421Sopenharmony_ci        cflags = [ "-fvisibility=hidden" ]
905bec5421Sopenharmony_ci      }
915bec5421Sopenharmony_ci    }
925bec5421Sopenharmony_ci  }
935bec5421Sopenharmony_ci
945bec5421Sopenharmony_ci  ohos_source_set("png_static") {
955bec5421Sopenharmony_ci    sources = get_target_outputs(":libpng_action")
965bec5421Sopenharmony_ci    include_dirs = [ "${target_gen_dir}/libpng-1.6.38/" ]
975bec5421Sopenharmony_ci    external_deps = [ "zlib:libz" ]
985bec5421Sopenharmony_ci    deps = [ ":libpng_action" ]
995bec5421Sopenharmony_ci    public_configs = [ ":libpng_config" ]
1005bec5421Sopenharmony_ci    part_name = "libpng"
1015bec5421Sopenharmony_ci    subsystem_name = "thirdparty"
1025bec5421Sopenharmony_ci  }
1035bec5421Sopenharmony_ci
1045bec5421Sopenharmony_ci  ohos_shared_library("libpng") {
1055bec5421Sopenharmony_ci    sources = get_target_outputs(":libpng_action")
1065bec5421Sopenharmony_ci    include_dirs = [ "${target_gen_dir}/libpng-1.6.38/" ]
1075bec5421Sopenharmony_ci    deps = [ ":libpng_action" ]
1085bec5421Sopenharmony_ci    if (is_arkui_x) {
1095bec5421Sopenharmony_ci      deps += [ "//third_party/zlib:libz" ]
1105bec5421Sopenharmony_ci    } else {
1115bec5421Sopenharmony_ci      external_deps = [ "zlib:libz" ]
1125bec5421Sopenharmony_ci    }
1135bec5421Sopenharmony_ci
1145bec5421Sopenharmony_ci    public_configs = [ ":libpng_config" ]
1155bec5421Sopenharmony_ci    configs = [ ":libpng_wno_config" ]
1165bec5421Sopenharmony_ci    innerapi_tags = [
1175bec5421Sopenharmony_ci      "platformsdk",
1185bec5421Sopenharmony_ci      "chipsetsdk",
1195bec5421Sopenharmony_ci    ]
1205bec5421Sopenharmony_ci    subsystem_name = "thirdparty"
1215bec5421Sopenharmony_ci    install_images = [
1225bec5421Sopenharmony_ci      "system",
1235bec5421Sopenharmony_ci      "updater",
1245bec5421Sopenharmony_ci    ]
1255bec5421Sopenharmony_ci    part_name = "libpng"
1265bec5421Sopenharmony_ci    output_name = "libpng"
1275bec5421Sopenharmony_ci    install_enable = true
1285bec5421Sopenharmony_ci  }
1295bec5421Sopenharmony_ci
1305bec5421Sopenharmony_ci  ohos_static_library("libpng_static") {
1315bec5421Sopenharmony_ci    sources = get_target_outputs(":libpng_action")
1325bec5421Sopenharmony_ci
1335bec5421Sopenharmony_ci    include_dirs = [ "${target_gen_dir}/libpng-1.6.38/" ]
1345bec5421Sopenharmony_ci    deps = [ ":libpng_action" ]
1355bec5421Sopenharmony_ci    if (is_arkui_x) {
1365bec5421Sopenharmony_ci      deps += [ "//third_party/zlib:libz" ]
1375bec5421Sopenharmony_ci    } else {
1385bec5421Sopenharmony_ci      external_deps = [ "zlib:libz" ]
1395bec5421Sopenharmony_ci    }
1405bec5421Sopenharmony_ci    public_configs = [ ":libpng_config" ]
1415bec5421Sopenharmony_ci    configs = [ ":libpng_wno_config" ]
1425bec5421Sopenharmony_ci    configs += [ ":libpng_wno_config_static" ]
1435bec5421Sopenharmony_ci    part_name = "libpng"
1445bec5421Sopenharmony_ci    subsystem_name = "thirdparty"
1455bec5421Sopenharmony_ci  }
1465bec5421Sopenharmony_ci}
147