| # Copyright (c) 2012 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. | 
 |  | 
 | { | 
 |   'xcode_settings': { | 
 |     'SYMROOT': '<(DEPTH)/xcodebuild', | 
 |   }, | 
 |   'variables': { | 
 |     'shared_generated_dir': '<(SHARED_INTERMEDIATE_DIR)/third_party/externals/libjpeg-turbo', | 
 |     'conditions': [ | 
 |       [ 'skia_os == "win"', { | 
 |         'object_suffix': 'obj', | 
 |       }, { | 
 |         'object_suffix': 'o', | 
 |       }], | 
 |     ], | 
 |   }, | 
 |   'targets': [ | 
 |     { | 
 |       'target_name': 'yasm-win', | 
 |       'type': 'executable', | 
 |       'sources': [ | 
 |         '../third_party/externals/yasm/binaries/win/yasm.exe', | 
 |       ], | 
 |       'copies' : [{ | 
 |         'destination': '<(PRODUCT_DIR)', | 
 |         'files': [ '../third_party/externals/yasm/binaries/win/yasm.exe' ], | 
 |       }], | 
 |     }, | 
 |     { | 
 |       'target_name': 'libjpeg-turbo', | 
 |       'type': 'static_library', | 
 |       'include_dirs': [ | 
 |         '../third_party/externals/libjpeg-turbo/', | 
 |       ], | 
 |       'defines': [ | 
 |         'WITH_SIMD', | 
 |         'MOTION_JPEG_SUPPORTED', | 
 |         'NO_GETENV', | 
 |       ], | 
 |       'cflags': [ | 
 |         '-w', # supresses warnings | 
 |       ], | 
 |       'msvs_settings': { | 
 |         'VCCLCompilerTool': { | 
 |           'WarningLevel': '0', | 
 |         }, | 
 |       }, | 
 |       'xcode_settings': { | 
 |         'WARNING_CFLAGS': [ | 
 |           '-w', | 
 |         ], | 
 |       }, | 
 |       'sources': [ | 
 |         '../third_party/externals/libjpeg-turbo/jaricom.c', | 
 |         '../third_party/externals/libjpeg-turbo/jcapimin.c', | 
 |         '../third_party/externals/libjpeg-turbo/jcapistd.c', | 
 |         '../third_party/externals/libjpeg-turbo/jcarith.c', | 
 |         '../third_party/externals/libjpeg-turbo/jccoefct.c', | 
 |         '../third_party/externals/libjpeg-turbo/jccolor.c', | 
 |         '../third_party/externals/libjpeg-turbo/jcdctmgr.c', | 
 |         '../third_party/externals/libjpeg-turbo/jchuff.c', | 
 |         '../third_party/externals/libjpeg-turbo/jchuff.h', | 
 |         '../third_party/externals/libjpeg-turbo/jcinit.c', | 
 |         '../third_party/externals/libjpeg-turbo/jcmainct.c', | 
 |         '../third_party/externals/libjpeg-turbo/jcmarker.c', | 
 |         '../third_party/externals/libjpeg-turbo/jcmaster.c', | 
 |         '../third_party/externals/libjpeg-turbo/jcomapi.c', | 
 |         '../third_party/externals/libjpeg-turbo/jconfig.h', | 
 |         '../third_party/externals/libjpeg-turbo/jconfigint.h', | 
 |         '../third_party/externals/libjpeg-turbo/jcparam.c', | 
 |         '../third_party/externals/libjpeg-turbo/jcphuff.c', | 
 |         '../third_party/externals/libjpeg-turbo/jcprepct.c', | 
 |         '../third_party/externals/libjpeg-turbo/jcsample.c', | 
 |         '../third_party/externals/libjpeg-turbo/jdapimin.c', | 
 |         '../third_party/externals/libjpeg-turbo/jdapistd.c', | 
 |         '../third_party/externals/libjpeg-turbo/jdarith.c', | 
 |         '../third_party/externals/libjpeg-turbo/jdcoefct.c', | 
 |         '../third_party/externals/libjpeg-turbo/jdcolor.c', | 
 |         '../third_party/externals/libjpeg-turbo/jdct.h', | 
 |         '../third_party/externals/libjpeg-turbo/jddctmgr.c', | 
 |         '../third_party/externals/libjpeg-turbo/jdhuff.c', | 
 |         '../third_party/externals/libjpeg-turbo/jdhuff.h', | 
 |         '../third_party/externals/libjpeg-turbo/jdinput.c', | 
 |         '../third_party/externals/libjpeg-turbo/jdmainct.c', | 
 |         '../third_party/externals/libjpeg-turbo/jdmarker.c', | 
 |         '../third_party/externals/libjpeg-turbo/jdmaster.c', | 
 |         '../third_party/externals/libjpeg-turbo/jdmerge.c', | 
 |         '../third_party/externals/libjpeg-turbo/jdphuff.c', | 
 |         '../third_party/externals/libjpeg-turbo/jdpostct.c', | 
 |         '../third_party/externals/libjpeg-turbo/jdsample.c', | 
 |         '../third_party/externals/libjpeg-turbo/jerror.c', | 
 |         '../third_party/externals/libjpeg-turbo/jerror.h', | 
 |         '../third_party/externals/libjpeg-turbo/jfdctflt.c', | 
 |         '../third_party/externals/libjpeg-turbo/jfdctfst.c', | 
 |         '../third_party/externals/libjpeg-turbo/jfdctint.c', | 
 |         '../third_party/externals/libjpeg-turbo/jidctflt.c', | 
 |         '../third_party/externals/libjpeg-turbo/jidctfst.c', | 
 |         '../third_party/externals/libjpeg-turbo/jidctint.c', | 
 |         '../third_party/externals/libjpeg-turbo/jidctred.c', | 
 |         '../third_party/externals/libjpeg-turbo/jinclude.h', | 
 |         '../third_party/externals/libjpeg-turbo/jmemmgr.c', | 
 |         '../third_party/externals/libjpeg-turbo/jmemnobs.c', | 
 |         '../third_party/externals/libjpeg-turbo/jmemsys.h', | 
 |         '../third_party/externals/libjpeg-turbo/jmorecfg.h', | 
 |         '../third_party/externals/libjpeg-turbo/jpegint.h', | 
 |         '../third_party/externals/libjpeg-turbo/jpeglib.h', | 
 |         '../third_party/externals/libjpeg-turbo/jpeglibmangler.h', | 
 |         '../third_party/externals/libjpeg-turbo/jquant1.c', | 
 |         '../third_party/externals/libjpeg-turbo/jquant2.c', | 
 |         '../third_party/externals/libjpeg-turbo/jutils.c', | 
 |         '../third_party/externals/libjpeg-turbo/jversion.h', | 
 |       ], | 
 |       'direct_dependent_settings': { | 
 |         'include_dirs': [ | 
 |           '../third_party/externals/libjpeg-turbo/', | 
 |         ], | 
 |       }, | 
 |       'msvs_disabled_warnings': [4018, 4101], | 
 |       # VS2010 does not correctly incrementally link obj files generated | 
 |       # from asm files. This flag disables UseLibraryDependencyInputs to | 
 |       # avoid this problem. | 
 |       'msvs_2010_disable_uldi_when_referenced': 1, | 
 |  | 
 |       # Add target-specific source files. | 
 |       'conditions': [ | 
 |         # FIXME (msarett): Reenable yasm on Android for x86 and x86_64 | 
 |         # https://code.google.com/p/skia/issues/detail?id=4028 | 
 |         [ 'skia_os == "android" and "x86" in skia_arch_type', { | 
 |           'sources': [ | 
 |             '../third_party/externals/libjpeg-turbo/jsimd_none.c', | 
 |           ], | 
 |         }], | 
 |         [ 'skia_arch_type == "x86" and skia_os != "android"', { | 
 |           'sources': [ | 
 |             '../third_party/externals/libjpeg-turbo/simd/jsimd_i386.c', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jccolor-mmx.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jccolor-sse2.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jcgray-mmx.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jcgray-sse2.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jcsample-mmx.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jcsample-sse2.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jdcolor-mmx.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jdcolor-sse2.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jdmerge-mmx.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jdmerge-sse2.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jdsample-mmx.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jdsample-sse2.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jfdctflt-3dn.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jfdctflt-sse.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jfdctfst-mmx.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jfdctfst-sse2.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jfdctint-mmx.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jfdctint-sse2.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jidctflt-3dn.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jidctflt-sse2.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jidctflt-sse.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jidctfst-mmx.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jidctfst-sse2.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jidctint-mmx.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jidctint-sse2.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jidctred-mmx.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jidctred-sse2.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jquant-3dn.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jquantf-sse2.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jquanti-sse2.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jquant-mmx.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jquant-sse.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jsimdcpu.asm', | 
 |           ], | 
 |         }], | 
 |         [ 'skia_arch_type == "x86_64" and skia_os != "android"', { | 
 |           'sources': [ | 
 |             '../third_party/externals/libjpeg-turbo/simd/jsimd_x86_64.c', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jccolor-sse2-64.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jcgray-sse2-64.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jcsample-sse2-64.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jdcolor-sse2-64.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jdmerge-sse2-64.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jdsample-sse2-64.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jfdctflt-sse-64.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jfdctfst-sse2-64.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jfdctint-sse2-64.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jidctflt-sse2-64.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jidctfst-sse2-64.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jidctint-sse2-64.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jidctred-sse2-64.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jquantf-sse2-64.asm', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jquanti-sse2-64.asm', | 
 |           ], | 
 |         }], | 
 |         [ 'skia_arch_type == "arm64"', { | 
 |           'sources': [ | 
 |             '../third_party/externals/libjpeg-turbo/simd/jsimd_arm64.c', | 
 |             '../third_party/externals/libjpeg-turbo/simd/jsimd_arm64_neon.S', | 
 |           ], | 
 |         }], | 
 |         [ 'skia_arch_type == "arm"', { | 
 |           'conditions': [ | 
 |             [ 'arm_version >= 7 and (arm_neon == 1 or arm_neon_optional == 1)', { | 
 |               'sources': [ | 
 |                 '../third_party/externals/libjpeg-turbo/simd/jsimd_arm.c', | 
 |                 '../third_party/externals/libjpeg-turbo/simd/jsimd_arm_neon.S', | 
 |               ], | 
 |             }, { | 
 |               'sources': [ | 
 |                 '../third_party/externals/libjpeg-turbo/jsimd_none.c', | 
 |               ], | 
 |             }], | 
 |           ], | 
 |         }], | 
 |         [ 'skia_arch_type == "mips"', { | 
 |           'conditions': [ | 
 |             [ 'skia_arch_width == 64', { | 
 |               'sources': [ | 
 |                 '../third_party/externals/libjpeg-turbo/simd/jsimd_mips.c', | 
 |                 '../third_party/externals/libjpeg-turbo/simd/jsimd_mips_dspr2_asm.h', | 
 |                 '../third_party/externals/libjpeg-turbo/simd/jsimd_mips_dspr2.S', | 
 |               ], | 
 |             }, { | 
 |               'sources': [ | 
 |                 '../third_party/externals/libjpeg-turbo/jsimd_none.c', | 
 |               ], | 
 |             }], | 
 |           ], | 
 |         }], | 
 |        | 
 |         # Build rules for an asm file. | 
 |         # On Windows, we use the precompiled yasm binary. | 
 |         # On Linux, we build our patched yasm and use it. | 
 |         # On Mac, we always build our patched yasm and use it. | 
 |         [ 'skia_os == "win"', { | 
 |           'dependencies': [ | 
 |             'yasm-win', | 
 |           ], | 
 |           'variables': { | 
 |             'yasm_path': '<(PRODUCT_DIR)/yasm.exe', | 
 |             'conditions': [ | 
 |               [ 'skia_arch_type == "x86"', { | 
 |                 'yasm_format': '-fwin32', | 
 |                 'yasm_flags': [ | 
 |                   '-D__x86__', | 
 |                   '-DWIN32', | 
 |                   '-DMSVC', | 
 |                   '-Iwin/' | 
 |                 ], | 
 |               }, { | 
 |                 'yasm_format': '-fwin64', | 
 |                 'yasm_flags': [ | 
 |                   '-D__x86_64__', | 
 |                   '-DWIN64', | 
 |                   '-DMSVC', | 
 |                   '-Iwin/' | 
 |                 ], | 
 |               }], | 
 |             ], | 
 |           }, | 
 |         }], | 
 |         [ 'skia_os == "android" and (skia_arch_type == "x86" or skia_arch_type == "x86_64")', { | 
 |           'variables': { | 
 |             'yasm_path': '../third_party/yasm/config/android/yasm', | 
 |             'conditions': [ | 
 |               [ 'skia_arch_type == "x86"', { | 
 |                 'yasm_format': '-felf', | 
 |                 'yasm_flags': [ | 
 |                   '-D__x86__', | 
 |                   '-DELF', | 
 |                   '-Ilinux/' | 
 |                 ], | 
 |               }, { | 
 |                 'yasm_format': '-felf64', | 
 |                 'yasm_flags': [ | 
 |                   '-D__x86_64__', | 
 |                   '-DELF', | 
 |                   '-Ilinux/' | 
 |                 ], | 
 |               }], | 
 |             ], | 
 |           }, | 
 |         }], | 
 |         [ '(skia_os == "mac" or skia_os == "ios") and \ | 
 |            (skia_arch_type == "x86" or skia_arch_type == "x86_64")', { | 
 |           'dependencies': [ | 
 |             'yasm.gyp:yasm#host', | 
 |           ], | 
 |           'variables': { | 
 |             'yasm_path': '<(PRODUCT_DIR)/yasm', | 
 |             'conditions': [ | 
 |               [ 'skia_arch_type == "x86"', { | 
 |                 'yasm_format': '-fmacho', | 
 |                 'yasm_flags': [ | 
 |                   '-D__x86__', | 
 |                   '-DMACHO', | 
 |                   '-Imac/' | 
 |                 ], | 
 |               }, { | 
 |                 'yasm_format': '-fmacho64', | 
 |                 'yasm_flags': [ | 
 |                   '-D__x86_64__', | 
 |                   '-DMACHO', | 
 |                   '-Imac/' | 
 |                 ], | 
 |               }], | 
 |             ], | 
 |           }, | 
 |         }], | 
 |         [ '(skia_os == "linux" or skia_os == "freebsd" or skia_os == "openbsd" or \ | 
 |             skia_os == "solaris" or skia_os == "chromeos")', { | 
 |           'dependencies': [ | 
 |             'yasm.gyp:yasm#host', | 
 |           ], | 
 |           'variables': { | 
 |             'yasm_path': '<(PRODUCT_DIR)/yasm', | 
 |             'conditions': [ | 
 |               [ 'skia_arch_type == "x86"', { | 
 |                 'yasm_format': '-felf', | 
 |                 'yasm_flags': [ | 
 |                   '-D__x86__', | 
 |                   '-DELF', | 
 |                   '-Ilinux/' | 
 |                 ], | 
 |               }, { | 
 |                 'yasm_format': '-felf64', | 
 |                 'yasm_flags': [ | 
 |                   '-D__x86_64__', | 
 |                   '-DELF', | 
 |                   '-Ilinux/' | 
 |                 ], | 
 |               }], | 
 |             ], | 
 |           }, | 
 |         }], | 
 |       ], | 
 |       'rules': [ | 
 |         { | 
 |           'rule_name': 'assemble', | 
 |           'extension': 'asm', | 
 |           'conditions': [ | 
 |             [ 'skia_arch_type == "x86" or skia_arch_type == "x86_64"', { | 
 |               'inputs': [], | 
 |               'outputs': [ | 
 |                 '<(shared_generated_dir)/<(RULE_INPUT_ROOT).<(object_suffix)', | 
 |               ], | 
 |               'action': [ | 
 |                 '<(yasm_path)', | 
 |                 '<(yasm_format)', | 
 |                 '<@(yasm_flags)', | 
 |                 '-DRGBX_FILLER_0XFF', | 
 |                 '-DSTRICT_MEMORY_ACCESS', | 
 |                 '-Isimd/', | 
 |                 '-o', '<(shared_generated_dir)/<(RULE_INPUT_ROOT).<(object_suffix)', | 
 |                 '<(RULE_INPUT_PATH)', | 
 |               ], | 
 |               'process_outputs_as_sources': 1, | 
 |               'message': 'Building <(RULE_INPUT_ROOT).<(object_suffix)', | 
 |             }], | 
 |           ] | 
 |         }, | 
 |       ], | 
 |     }, | 
 |   ], | 
 | } |