| # Copyright 2014 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//build/config/chromecast_build.gni") |
| import("//build/config/arm.gni") |
| import("//build/config/mips.gni") |
| |
| config("libpng_config") { |
| include_dirs = [ "." ] |
| |
| defines = [] |
| |
| if (is_win) { |
| if (is_component_build) { |
| defines += [ |
| "PNG_USE_DLL", |
| "PNG_NO_MODULEDEF", |
| ] |
| } |
| } |
| } |
| |
| # Must be in a config because of how GN orders flags (otherwise -Wall will |
| # appear after this, and turn it back on). |
| config("clang_warnings") { |
| if (is_clang) { |
| cflags = [ |
| # libpng checks that the width is not greater than PNG_SIZE_MAX. |
| # On platforms where size_t is 64-bits, this comparison will always |
| # be false. |
| "-Wno-tautological-constant-out-of-range-compare", |
| ] |
| } |
| } |
| |
| # Cannot be a static_library in component builds |
| source_set("libpng_sources") { |
| sources = [ |
| "png.c", |
| "png.h", |
| "pngconf.h", |
| "pngdebug.h", |
| "pngerror.c", |
| "pngget.c", |
| "pnginfo.h", |
| "pnglibconf.h", |
| "pngmem.c", |
| "pngpread.c", |
| "pngprefix.h", |
| "pngpriv.h", |
| "pngread.c", |
| "pngrio.c", |
| "pngrtran.c", |
| "pngrutil.c", |
| "pngset.c", |
| "pngstruct.h", |
| "pngtrans.c", |
| "pngwio.c", |
| "pngwrite.c", |
| "pngwtran.c", |
| "pngwutil.c", |
| ] |
| |
| defines = [ "PNG_SET_OPTION_SUPPORTED" ] |
| cflags = [] |
| |
| if (current_cpu == "x86" || current_cpu == "x64") { |
| sources += [ |
| "intel/filter_sse2_intrinsics.c", |
| "intel/intel_init.c", |
| ] |
| defines += [ "PNG_INTEL_SSE_OPT=1" ] |
| } else if ((current_cpu == "arm" || current_cpu == "arm64") && arm_use_neon) { |
| sources += [ |
| "arm/arm_init.c", |
| "arm/filter_neon_intrinsics.c", |
| "arm/palette_neon_intrinsics.c", |
| ] |
| defines += [ |
| "PNG_ARM_NEON_OPT=2", |
| "PNG_ARM_NEON_IMPLEMENTATION=1", |
| ] |
| } else if (current_cpu == "mips64el" && mips_use_msa) { |
| sources += [ |
| "mips/filter_msa_intrinsics.c", |
| "mips/mips_init.c", |
| ] |
| } |
| |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| |
| if (is_win) { |
| # Unary minus applied to unsigned type. |
| cflags += [ "/wd4146" ] |
| } |
| |
| if (is_win && is_component_build) { |
| defines += [ "PNG_BUILD_DLL" ] |
| } |
| |
| public_configs = [ ":libpng_config" ] |
| |
| public_deps = [ |
| "//third_party/zlib", |
| ] |
| |
| configs += [ ":clang_warnings" ] |
| } |
| |
| if (is_win) { |
| component("libpng") { |
| public_deps = [ |
| ":libpng_sources", |
| ] |
| } |
| } else { |
| group("libpng") { |
| public_deps = [ |
| ":libpng_sources", |
| ] |
| } |
| } |