diff options
Diffstat (limited to 'libjpeg.gyp')
-rw-r--r-- | libjpeg.gyp | 317 |
1 files changed, 317 insertions, 0 deletions
diff --git a/libjpeg.gyp b/libjpeg.gyp new file mode 100644 index 0000000..e20b0d9 --- /dev/null +++ b/libjpeg.gyp @@ -0,0 +1,317 @@ +# 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. + +{ + # This file is not used when use_system_libjpeg==1. Settings for building with + # the system libjpeg is in third_party/libjpeg/libjpeg.gyp. + 'variables': { + 'shared_generated_dir': '<(SHARED_INTERMEDIATE_DIR)/third_party/libjpeg_turbo', + 'conditions': [ + [ 'OS=="win"', { + 'object_suffix': 'obj', + }, { + 'object_suffix': 'o', + }], + ], + }, + 'targets': [ + { + 'target_name': 'libjpeg', + 'type': 'static_library', + 'include_dirs': [ + '.', + ], + 'defines': [ + 'WITH_SIMD', + 'MOTION_JPEG_SUPPORTED', + 'NO_GETENV', + ], + 'sources': [ + 'jcapimin.c', + 'jcapistd.c', + 'jccoefct.c', + 'jccolor.c', + 'jcdctmgr.c', + 'jchuff.c', + 'jchuff.h', + 'jcinit.c', + 'jcmainct.c', + 'jcmarker.c', + 'jcmaster.c', + 'jcomapi.c', + 'jconfig.h', + 'jcparam.c', + 'jcphuff.c', + 'jcprepct.c', + 'jcsample.c', + 'jdapimin.c', + 'jdapistd.c', + 'jdatadst.c', + 'jdatasrc.c', + 'jdcoefct.c', + 'jdcolor.c', + 'jdct.h', + 'jddctmgr.c', + 'jdhuff.c', + 'jdhuff.h', + 'jdinput.c', + 'jdmainct.c', + 'jdmarker.c', + 'jdmaster.c', + 'jdmerge.c', + 'jdphuff.c', + 'jdpostct.c', + 'jdsample.c', + 'jerror.c', + 'jerror.h', + 'jfdctflt.c', + 'jfdctfst.c', + 'jfdctint.c', + 'jidctflt.c', + 'jidctfst.c', + 'jidctint.c', + 'jidctred.c', + 'jinclude.h', + 'jmemmgr.c', + 'jmemnobs.c', + 'jmemsys.h', + 'jmorecfg.h', + 'jpegint.h', + 'jpeglib.h', + 'jpeglibmangler.h', + 'jquant1.c', + 'jquant2.c', + 'jutils.c', + 'jversion.h', + ], + 'direct_dependent_settings': { + 'include_dirs': [ + '.', + ], + }, + '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, + 'conditions': [ + [ 'OS!="win"', {'product_name': 'jpeg_turbo'}], + # Add target-specific source files. + [ 'target_arch=="ia32"', { + 'sources': [ + 'simd/jsimd_i386.c', + 'simd/jccolmmx.asm', + 'simd/jccolss2.asm', + 'simd/jcgrammx.asm', + 'simd/jcgrass2.asm', + 'simd/jcqnt3dn.asm', + 'simd/jcqntmmx.asm', + 'simd/jcqnts2f.asm', + 'simd/jcqnts2i.asm', + 'simd/jcqntsse.asm', + 'simd/jcsammmx.asm', + 'simd/jcsamss2.asm', + 'simd/jdcolmmx.asm', + 'simd/jdcolss2.asm', + 'simd/jdmermmx.asm', + 'simd/jdmerss2.asm', + 'simd/jdsammmx.asm', + 'simd/jdsamss2.asm', + 'simd/jf3dnflt.asm', + 'simd/jfmmxfst.asm', + 'simd/jfmmxint.asm', + 'simd/jfss2fst.asm', + 'simd/jfss2int.asm', + 'simd/jfsseflt.asm', + 'simd/ji3dnflt.asm', + 'simd/jimmxfst.asm', + 'simd/jimmxint.asm', + 'simd/jimmxred.asm', + 'simd/jiss2flt.asm', + 'simd/jiss2fst.asm', + 'simd/jiss2int.asm', + 'simd/jiss2red.asm', + 'simd/jisseflt.asm', + 'simd/jsimdcpu.asm', + ], + }], + [ 'target_arch=="x64" and msan!=1', { + 'sources': [ + 'simd/jsimd_x86_64.c', + 'simd/jccolss2-64.asm', + 'simd/jcgrass2-64.asm', + 'simd/jcqnts2f-64.asm', + 'simd/jcqnts2i-64.asm', + 'simd/jcsamss2-64.asm', + 'simd/jdcolss2-64.asm', + 'simd/jdmerss2-64.asm', + 'simd/jdsamss2-64.asm', + 'simd/jfss2fst-64.asm', + 'simd/jfss2int-64.asm', + 'simd/jfsseflt-64.asm', + 'simd/jiss2flt-64.asm', + 'simd/jiss2fst-64.asm', + 'simd/jiss2int-64.asm', + 'simd/jiss2red-64.asm', + ], + }], + # MemorySanitizer doesn't support assembly code, so keep it disabled in + # MSan builds for now. + [ 'msan==1', { + 'sources': [ + 'jsimd_none.c', + ], + }], + # The ARM SIMD implementation can be used for devices that support + # the NEON instruction set. This can safely be done dynamically by + # probing CPU features at runtime, if you wish. + [ 'target_arch=="arm"', { + 'conditions': [ + [ 'arm_version >= 7 and (arm_neon == 1 or arm_neon_optional == 1)', { + 'sources': [ + 'simd/jsimd_arm.c', + 'simd/jsimd_arm_neon.S', + ], + }, { + 'sources': [ + 'jsimd_none.c', + ], + }] + ], + }], + [ 'target_arch=="arm64"', { + 'sources': [ + 'simd/jsimd_arm64.c', + 'simd/jsimd_arm64_neon.S', + ], + }], + [ 'target_arch=="mipsel"', { + 'sources': [ + '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 except when use_system_yasm is 1. On + # Mac, we always build our patched yasm and use it because of + # <http://www.tortall.net/projects/yasm/ticket/236>. + [ 'OS=="win"', { + 'variables': { + 'yasm_path': '../yasm/binaries/win/yasm<(EXECUTABLE_SUFFIX)', + 'conditions': [ + [ 'target_arch=="ia32"', { + 'yasm_format': '-fwin32', + 'yasm_flags': [ + '-D__x86__', + '-DWIN32', + '-DMSVC', + '-Iwin/' + ], + }, { + 'yasm_format': '-fwin64', + 'yasm_flags': [ + '-D__x86_64__', + '-DWIN64', + '-DMSVC', + '-Iwin/' + ], + }], + ], + }, + }], + [ 'OS=="mac" or OS=="ios"', { + 'dependencies': [ + '../yasm/yasm.gyp:yasm#host', + ], + 'variables': { + 'yasm_path': '<(PRODUCT_DIR)/yasm', + 'conditions': [ + [ 'target_arch=="ia32"', { + 'yasm_format': '-fmacho', + 'yasm_flags': [ + '-D__x86__', + '-DMACHO', + '-Imac/' + ], + }, { + 'yasm_format': '-fmacho64', + 'yasm_flags': [ + '-D__x86_64__', + '-DMACHO', + '-Imac/' + ], + }], + ], + }, + }], + [ 'OS=="linux" or OS=="freebsd" or (OS=="android" and (target_arch=="ia32" or target_arch=="x64"))', { + 'conditions': [ + [ 'use_system_yasm==0', { + 'dependencies': [ + '../yasm/yasm.gyp:yasm#host', + ], + }], + ], + 'variables': { + 'conditions': [ + [ 'use_system_yasm==1', { + 'yasm_path': '<!(which yasm)', + }, { + 'yasm_path': '<(PRODUCT_DIR)/yasm', + }], + [ 'target_arch=="ia32"', { + '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': [ + [ 'target_arch=="ia32" or target_arch=="x64"', { + 'inputs': [ '<(yasm_path)', ], + '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)', + }], + ] + }, + ], + }, + ], +} + +# Local Variables: +# tab-width:2 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=2 shiftwidth=2: |