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