Add libjpeg-turbo library (depends on yasm)

Mangle external function names to avoid conflict with libjpeg
Take advantage of direct color conversion (RGBA, BGRA, 565)
Prepare to use jpeg_skip_scanlines (when it is upstreamed)

BUG=skia:

Committed: https://skia.googlesource.com/skia/+/b60c3f8291529303299262dba19b1a896060bd2d

Committed: https://skia.googlesource.com/skia/+/f8bf9181d7b0463c8e371755cfbb9ece90b34fc5

Committed: https://skia.googlesource.com/skia/+/e9e3ee33f30c14c31afd5fc3fe4dda7f15783c75

Review URL: https://codereview.chromium.org/1180983002
This commit is contained in:
msarett 2015-07-01 14:41:02 -07:00 committed by Commit bot
parent c50acf2321
commit 40141b57f0
35 changed files with 29359 additions and 186 deletions

5
DEPS
View File

@ -21,6 +21,11 @@ deps = {
"third_party/externals/libpng" : "https://skia.googlesource.com/third_party/libpng.git@070a616b8275277e18ef8ee91e2ca23f7bdc67d5",
"third_party/externals/giflib" : "https://android.googlesource.com/platform/external/giflib.git@android-5.1.0_r3",
"third_party/externals/libjpeg-turbo" : "https://skia.googlesource.com/third_party/libjpeg-turbo.git@trunk+leakfix",
# libjpeg-turbo depends on yasm to compile .asm files
"third_party/externals/yasm/source/patched-yasm/" : "https://chromium.googlesource.com/chromium/deps/yasm/patched-yasm.git@4671120cd8558ce62ee8672ebf3eb6f5216f909b",
"third_party/externals/yasm/binaries" : "https://chromium.googlesource.com/chromium/deps/yasm/binaries.git@52f9b3f4b0aa06da24ef8b123058bb61ee468881",
"platform_tools/android/third_party/externals/expat" : "https://android.googlesource.com/platform/external/expat.git@android-5.1.0_r3",
"platform_tools/android/third_party/externals/jpeg" : "https://android.googlesource.com/platform/external/jpeg.git@android-5.1.0_r3",
"platform_tools/android/third_party/externals/png" : "https://android.googlesource.com/platform/external/libpng.git@android-4.2.2_r1.2",

View File

@ -209,7 +209,7 @@ static void push_codec_srcs(Path path) {
// TODO (msarett): Add more scaling tests as we implement more flexible scaling.
// TODO (msarett): Implement scaling tests for SkImageDecoder in order to compare with these
// tests. SkImageDecoder supports downscales by integer factors.
const float scales[] = { 0.125f, 0.25f, 0.5f, 1.0f };
const float scales[] = { 0.125f, 0.25f, 0.375f, 0.5f, 0.625f, 0.750f, 0.875f, 1.0f };
for (float scale : scales) {
// Build additional test cases for images that decode natively to non-canvas types

View File

@ -18,9 +18,12 @@
'dependencies': [
'core.gyp:*',
'giflib.gyp:giflib',
'libjpeg.gyp:libjpeg',
'libjpeg-turbo.gyp:libjpeg-turbo',
'libwebp.gyp:libwebp',
],
'export_dependent_settings': [
'libjpeg-turbo.gyp:libjpeg-turbo',
],
'cflags':[
# FIXME: This gets around a longjmp warning. See
# http://build.chromium.org/p/client.skia.compile/builders/Build-Ubuntu-GCC-x86_64-Release-Trybot/builds/113/steps/build%20most/logs/stdio
@ -60,10 +63,23 @@
'dependencies': [
'libpng.gyp:libpng',
],
# TODO(msarett): update libjpeg-turbo on Android so we can compile SkJpegCodec
# for the framework.
'sources!': [
'../src/codec/SkJpegCodec.cpp',
'../src/codec/SkJpegDecoderMgr.cpp',
'../src/codec/SkJpegUtility_codec.cpp',
],
'dependencies!': [
'libjpeg-turbo.gyp:libjpeg-turbo',
],
}, { # !skia_android_framework
'dependencies': [
'libpng.gyp:libpng_static',
],
'cflags': [
'-DTURBO_HAS_SKIP',
],
}
]
]

341
gyp/libjpeg-turbo.gyp Normal file
View File

@ -0,0 +1,341 @@
# 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.
{
'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': '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': {
'AdditionalOptions': [
'/w',
],
},
},
'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': [
[ 'skia_arch_type == "x86"', {
'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"', {
'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 except when use_system_yasm is 1.
# On Mac, we always build our patched yasm and use it.
[ 'skia_os == "win"', {
'variables': {
'yasm_path': '../third_party/externals/yasm/binaries/win/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)',
}],
]
},
],
},
],
}

644
gyp/yasm.gyp Normal file
View File

@ -0,0 +1,644 @@
# 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.
# The yasm build process creates a slew of small C subprograms that
# dynamically generate files at various point in the build process. This makes
# the build integration moderately complex.
#
# There are three classes of dynamically generated files:
# 1) C source files that should be included in the build (eg., lc3bid.c)
# 2) C source files that are #included by static C sources (eg., license.c)
# 3) Intermediate files that are used as input by other subprograms to
# further generate files in category #1 or #2. (eg., version.mac)
#
# This structure is represented with the following targets:
# 1) yasm -- Sources, flags for the main yasm executable. Also has most of
# of the actions and rules that invoke the subprograms.
# 2) config_sources -- Checked in version of files generated by manually
# running configure that are used by all binaries.
# 3) generate_files -- Actions and rules for files of type #3.
# 4) genperf_libs -- Object files shared between yasm and the genperf
# subprogram.
# 5) genmacro, genmodule, etc. -- One executable target for each subprogram.
#
# You will notice that a lot of the action targets seem very similar --
# especially for genmacro invocations. This makes it seem like they should
# be a rule. The problem is that the correct invocation cannot be inferred
# purely from the file name, or extension. Nor is it obvious whether the
# output should be processed as a source or not. Thus, we are left with a
# large amount of repetitive code.
{
'variables': {
'yasm_include_dirs': [
'../third_party/yasm/config/<(skia_os)',
'../third_party/externals/yasm/source/patched-yasm',
],
# The cflags used by any target that will be directly linked into yasm.
# These are specifically not used when building the subprograms. While
# it would probably be safe to use these flags there as well, the
# ./configure based build does not use the same flags between the main
# yasm executable, and its subprograms.
'yasm_defines': ['HAVE_CONFIG_H'],
'yasm_cflags': [
'-std=gnu99',
'-ansi',
'-pedantic',
'-w',
],
# Locations for various generated artifacts.
'shared_generated_dir': '<(SHARED_INTERMEDIATE_DIR)/third_party/yasm',
'generated_dir': '<(INTERMEDIATE_DIR)/third_party/yasm',
# Various files referenced by multiple targets.
'version_file': 'version.mac', # Generated by genversion.
'genmodule_source': 'genmodule_outfile.c',
},
'target_defaults': {
# Silence warnings in libc++ builds (C code doesn't need this flag).
'ldflags!': [ '-stdlib=libc++', '-fsanitize=address' ],
# https://crbug.com/489901
'cflags!': [ '-fsanitize=bounds', '-fsanitize=address' ],
},
'targets': [
{
'target_name': 'yasm',
'type': 'executable',
'toolsets': ['host'],
'dependencies': [
'config_sources',
'genmacro',
'genmodule',
'genperf',
'genperf_libs',
'generate_files', # Needed to generate gperf and instruction files.
'genstring',
're2c',
],
'variables': {
'clang_warning_flags': [
# yasm passes a `const elf_machine_sym*` through `void*`.
'-Wno-incompatible-pointer-types',
],
},
'conditions': [
['skia_os == "win"', {
# As of VS 2013 Update 3, building this project with /analyze hits an
# internal compiler error on elf-x86-amd64.c in release builds with
# the amd64_x86 compiler. This halts the build and prevents subsequent
# analysis. Therefore, /analyze is disabled for this project. See this
# bug for details:
# https://connect.microsoft.com/VisualStudio/feedback/details/1014799/internal-compiler-error-when-using-analyze
'msvs_settings': {
'VCCLCompilerTool': {
'AdditionalOptions!': [ '/analyze' ]
},
},
}],
],
'sources': [
'../third_party/externals/yasm/source/patched-yasm/frontends/yasm/yasm-options.c',
'../third_party/externals/yasm/source/patched-yasm/frontends/yasm/yasm.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/assocdat.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/bc-align.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/bc-data.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/bc-incbin.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/bc-org.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/bc-reserve.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/bitvect.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/bytecode.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/errwarn.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/expr.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/file.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/floatnum.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/hamt.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/insn.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/intnum.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/inttree.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/linemap.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/md5.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/mergesort.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/section.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/strcasecmp.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/strsep.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/symrec.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/valparam.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/value.c',
'../third_party/externals/yasm/source/patched-yasm/modules/arch/lc3b/lc3barch.c',
'../third_party/externals/yasm/source/patched-yasm/modules/arch/lc3b/lc3bbc.c',
'../third_party/externals/yasm/source/patched-yasm/modules/arch/x86/x86arch.c',
'../third_party/externals/yasm/source/patched-yasm/modules/arch/x86/x86bc.c',
'../third_party/externals/yasm/source/patched-yasm/modules/arch/x86/x86expr.c',
'../third_party/externals/yasm/source/patched-yasm/modules/arch/x86/x86id.c',
'../third_party/externals/yasm/source/patched-yasm/modules/dbgfmts/codeview/cv-dbgfmt.c',
'../third_party/externals/yasm/source/patched-yasm/modules/dbgfmts/codeview/cv-symline.c',
'../third_party/externals/yasm/source/patched-yasm/modules/dbgfmts/codeview/cv-type.c',
'../third_party/externals/yasm/source/patched-yasm/modules/dbgfmts/dwarf2/dwarf2-aranges.c',
'../third_party/externals/yasm/source/patched-yasm/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.c',
'../third_party/externals/yasm/source/patched-yasm/modules/dbgfmts/dwarf2/dwarf2-info.c',
'../third_party/externals/yasm/source/patched-yasm/modules/dbgfmts/dwarf2/dwarf2-line.c',
'../third_party/externals/yasm/source/patched-yasm/modules/dbgfmts/null/null-dbgfmt.c',
'../third_party/externals/yasm/source/patched-yasm/modules/dbgfmts/stabs/stabs-dbgfmt.c',
'../third_party/externals/yasm/source/patched-yasm/modules/listfmts/nasm/nasm-listfmt.c',
'../third_party/externals/yasm/source/patched-yasm/modules/objfmts/bin/bin-objfmt.c',
'../third_party/externals/yasm/source/patched-yasm/modules/objfmts/coff/coff-objfmt.c',
'../third_party/externals/yasm/source/patched-yasm/modules/objfmts/coff/win64-except.c',
'../third_party/externals/yasm/source/patched-yasm/modules/objfmts/dbg/dbg-objfmt.c',
'../third_party/externals/yasm/source/patched-yasm/modules/objfmts/elf/elf-objfmt.c',
'../third_party/externals/yasm/source/patched-yasm/modules/objfmts/elf/elf-x86-amd64.c',
'../third_party/externals/yasm/source/patched-yasm/modules/objfmts/elf/elf-x86-x86.c',
'../third_party/externals/yasm/source/patched-yasm/modules/objfmts/elf/elf.c',
'../third_party/externals/yasm/source/patched-yasm/modules/objfmts/macho/macho-objfmt.c',
'../third_party/externals/yasm/source/patched-yasm/modules/objfmts/rdf/rdf-objfmt.c',
'../third_party/externals/yasm/source/patched-yasm/modules/objfmts/xdf/xdf-objfmt.c',
'../third_party/externals/yasm/source/patched-yasm/modules/parsers/gas/gas-parse.c',
'../third_party/externals/yasm/source/patched-yasm/modules/parsers/gas/gas-parse-intel.c',
'../third_party/externals/yasm/source/patched-yasm/modules/parsers/gas/gas-parser.c',
'../third_party/externals/yasm/source/patched-yasm/modules/parsers/nasm/nasm-parse.c',
'../third_party/externals/yasm/source/patched-yasm/modules/parsers/nasm/nasm-parser.c',
'../third_party/externals/yasm/source/patched-yasm/modules/preprocs/cpp/cpp-preproc.c',
'../third_party/externals/yasm/source/patched-yasm/modules/preprocs/nasm/nasm-eval.c',
'../third_party/externals/yasm/source/patched-yasm/modules/preprocs/nasm/nasm-pp.c',
'../third_party/externals/yasm/source/patched-yasm/modules/preprocs/nasm/nasm-preproc.c',
'../third_party/externals/yasm/source/patched-yasm/modules/preprocs/nasm/nasmlib.c',
'../third_party/externals/yasm/source/patched-yasm/modules/preprocs/raw/raw-preproc.c',
# Sources needed by re2c.
'../third_party/externals/yasm/source/patched-yasm/modules/parsers/gas/gas-token.re',
'../third_party/externals/yasm/source/patched-yasm/modules/parsers/nasm/nasm-token.re',
# Sources needed by genperf. Make sure the generated gperf files
# (the ones in shared_generated_dir) are synced with the outputs
# for the related generate_*_insn actions in the generate_files
# target below.
'<(shared_generated_dir)/x86insn_nasm.gperf',
'<(shared_generated_dir)/x86insn_gas.gperf',
'<(shared_generated_dir)/x86cpu.c',
'<(shared_generated_dir)/x86regtmod.c',
],
'include_dirs': [
'<@(yasm_include_dirs)',
'<(shared_generated_dir)',
'<(generated_dir)',
],
'defines': [ '<@(yasm_defines)' ],
'cflags': [ '<@(yasm_cflags)', ],
'cflags!': [
'-mfpu=neon',
'-mthumb',
'-march=armv7-a',
],
'xcode_settings': {
'WARNING_CFLAGS': [
'-w',
],
},
'msvs_disabled_warnings': [ 4267 ],
'rules': [
{
'rule_name': 'generate_gperf',
'extension': 'gperf',
'inputs': [ '<(PRODUCT_DIR)/'
'<(EXECUTABLE_PREFIX)genperf<(EXECUTABLE_SUFFIX)' ],
'outputs': [
'<(generated_dir)/<(RULE_INPUT_ROOT).c',
],
'action': ['<(PRODUCT_DIR)/genperf',
'<(RULE_INPUT_PATH)',
'<(generated_dir)/<(RULE_INPUT_ROOT).c',
],
# These files are #included, so do not treat them as sources.
'process_outputs_as_sources': 0,
'message': 'yasm gperf for <(RULE_INPUT_PATH)',
},
{
'rule_name': 'generate_re2c',
'extension': 're',
'inputs': [ '<(PRODUCT_DIR)/'
'<(EXECUTABLE_PREFIX)re2c<(EXECUTABLE_SUFFIX)' ],
'outputs': [ '<(generated_dir)/<(RULE_INPUT_ROOT).c', ],
'action': [
'<(PRODUCT_DIR)/re2c',
'-b',
'-o',
'<(generated_dir)/<(RULE_INPUT_ROOT).c',
'<(RULE_INPUT_PATH)',
],
'process_outputs_as_sources': 1,
'message': 'yasm re2c for <(RULE_INPUT_PATH)',
},
],
'actions': [
###
### genmacro calls.
###
{
'action_name': 'generate_nasm_macros',
'variables': {
'infile': '../third_party/externals/yasm/source/patched-yasm/modules/parsers/nasm/nasm-std.mac',
'varname': 'nasm_standard_mac',
'outfile': '<(generated_dir)/nasm-macros.c',
},
'inputs': [ '<(PRODUCT_DIR)/'
'<(EXECUTABLE_PREFIX)genmacro<(EXECUTABLE_SUFFIX)',
'<(infile)', ],
'outputs': [ '<(outfile)', ],
'action': ['<(PRODUCT_DIR)/genmacro',
'<(outfile)', '<(varname)', '<(infile)', ],
# Not a direct source because this is #included by
# source/patched-yasm/modules/parsers/nasm/nasm-parser.c
'process_outputs_as_sources': 1,
'xcode_settings': {
'WARNING_CFLAGS': [
'-w',
],
},
'message': 'yasm genmacro for <(infile)',
},
{
'action_name': 'generate_nasm_version',
'variables': {
'infile': '<(shared_generated_dir)/<(version_file)',
'varname': 'nasm_version_mac',
'outfile': '<(generated_dir)/nasm-version.c',
},
'inputs': [ '<(PRODUCT_DIR)/'
'<(EXECUTABLE_PREFIX)genmacro<(EXECUTABLE_SUFFIX)',
'<(infile)', ],
'outputs': [ '<(outfile)', ],
'action': ['<(PRODUCT_DIR)/genmacro',
'<(outfile)', '<(varname)', '<(infile)',
],
# Not a direct source because this is #included by
# source/patched-yasm/modules/preprocs/nasm/nasm-preproc.c
'process_outputs_as_sources': 0,
'message': 'yasm genmacro for <(infile)',
},
{
'action_name': 'generate_win64_gas',
'variables': {
'infile': '../third_party/externals/yasm/source/patched-yasm/modules/objfmts/coff/win64-gas.mac',
'varname': 'win64_gas_stdmac',
'outfile': '<(generated_dir)/win64-gas.c',
},
'inputs': [ '<(PRODUCT_DIR)/'
'<(EXECUTABLE_PREFIX)genmacro<(EXECUTABLE_SUFFIX)',
'<(infile)', ],
'outputs': [ '<(outfile)', ],
'action': ['<(PRODUCT_DIR)/genmacro',
'<(outfile)', '<(varname)', '<(infile)',
],
# Not a direct source because this is #included by
# source/patched-yasm/modules/objfmts/coff/coff-objfmt.c
'process_outputs_as_sources': 0,
'message': 'yasm genmacro for <(infile)',
},
{
'action_name': 'generate_win64_nasm',
'variables': {
'infile': '../third_party/externals/yasm/source/patched-yasm/modules/objfmts/coff/win64-nasm.mac',
'varname': 'win64_nasm_stdmac',
'outfile': '<(generated_dir)/win64-nasm.c',
},
'inputs': [ '<(PRODUCT_DIR)/'
'<(EXECUTABLE_PREFIX)genmacro<(EXECUTABLE_SUFFIX)',
'<(infile)', ],
'outputs': [ '<(outfile)', ],
'action': ['<(PRODUCT_DIR)/genmacro',
'<(outfile)',
'<(varname)',
'<(infile)',
],
# Not a direct source because this is #included by
# source/patched-yasm/modules/objfmts/coff/coff-objfmt.c
'process_outputs_as_sources': 0,
'message': 'yasm genmacro for <(infile)',
},
###
### genstring call.
###
{
'action_name': 'generate_license',
'variables': {
'infile': '../third_party/externals/yasm/source/patched-yasm/COPYING',
'varname': 'license_msg',
'outfile': '<(generated_dir)/license.c',
},
'inputs': [ '<(PRODUCT_DIR)/'
'<(EXECUTABLE_PREFIX)genstring<(EXECUTABLE_SUFFIX)',
'<(infile)', ],
'outputs': [ '<(outfile)', ],
'action': ['<(PRODUCT_DIR)/genstring',
'<(varname)',
'<(outfile)',
'<(infile)',
],
# Not a direct source because this is #included by
# source/patched-yasm/frontends/yasm/yasm.c
'process_outputs_as_sources': 0,
'message': 'Generating yasm embeddable license',
},
###
### A re2c call that doesn't fit into the rule below.
###
{
'action_name': 'generate_lc3b_token',
'variables': {
'infile': '../third_party/externals/yasm/source/patched-yasm/modules/arch/lc3b/lc3bid.re',
# The license file is #included by yasm.c.
'outfile': '<(generated_dir)/lc3bid.c',
},
'inputs': [ '<(PRODUCT_DIR)/'
'<(EXECUTABLE_PREFIX)re2c<(EXECUTABLE_SUFFIX)',
'<(infile)', ],
'outputs': [ '<(outfile)', ],
'action': [
'<(PRODUCT_DIR)/re2c',
'-s',
'-o', '<(outfile)',
'<(infile)'
],
'process_outputs_as_sources': 1,
'message': 'Generating yasm tokens for lc3b',
},
###
### genmodule call.
###
{
'action_name': 'generate_module',
'variables': {
'makefile': '../third_party/yasm/config/<(skia_os)/Makefile',
'module_in': '../third_party/externals/yasm/source/patched-yasm/libyasm/module.in',
'outfile': '<(generated_dir)/module.c',
},
'inputs': [
'<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)genmodule<(EXECUTABLE_SUFFIX)',
'<(module_in)',
'<(makefile)'
],
'outputs': [ '<(generated_dir)/module.c' ],
'action': [
'<(PRODUCT_DIR)/genmodule',
'<(module_in)',
'<(makefile)',
'<(outfile)'
],
'process_outputs_as_sources': 1,
'message': 'Generating yasm module information',
},
],
},
{
'target_name': 'config_sources',
'type': 'none',
'toolsets': ['host'],
'sources': [
'../third_party/yasm/config/<(skia_os)/Makefile',
'../third_party/yasm/config/<(skia_os)/config.h',
'../third_party/yasm/config/<(skia_os)/libyasm-stdint.h',
],
},
{
'target_name': 'generate_files',
'type': 'none',
'toolsets': ['host'],
'dependencies': [
'genperf',
'genversion',
],
'sources': [
'../third_party/externals/yasm/source/patched-yasm/modules/arch/x86/x86cpu.gperf',
'../third_party/externals/yasm/source/patched-yasm/modules/arch/x86/x86regtmod.gperf',
],
'rules': [
{
'rule_name': 'generate_gperf',
'extension': 'gperf',
'inputs': [ '<(PRODUCT_DIR)/'
'<(EXECUTABLE_PREFIX)genperf<(EXECUTABLE_SUFFIX)' ],
'outputs': [ '<(shared_generated_dir)/<(RULE_INPUT_ROOT).c', ],
'action': [
'<(PRODUCT_DIR)/genperf',
'<(RULE_INPUT_PATH)',
'<(shared_generated_dir)/<(RULE_INPUT_ROOT).c',
],
'process_outputs_as_sources': 0,
'message': 'yasm genperf for <(RULE_INPUT_PATH)',
},
],
'actions': [
{
'action_name': 'generate_x86_insn',
'variables': {
'gen_insn_path':
'../third_party/externals/yasm/source/patched-yasm/modules/arch/x86/gen_x86_insn.py',
},
'inputs': [ '<(gen_insn_path)', ],
'outputs': [
'<(shared_generated_dir)/x86insns.c',
'<(shared_generated_dir)/x86insn_gas.gperf',
'<(shared_generated_dir)/x86insn_nasm.gperf',
],
'action': [
'python',
'<(gen_insn_path)',
'<(shared_generated_dir)',
],
'message': 'Running <(gen_insn_path)',
'process_outputs_as_sources': 0,
},
{
'action_name': 'generate_version',
'inputs': [ '<(PRODUCT_DIR)/'
'<(EXECUTABLE_PREFIX)genversion<(EXECUTABLE_SUFFIX)' ],
'outputs': [ '<(shared_generated_dir)/<(version_file)', ],
'action': [
'<(PRODUCT_DIR)/genversion',
'<(shared_generated_dir)/<(version_file)'
],
'message': 'Generating yasm version file: '
'<(shared_generated_dir)/<(version_file)',
'process_outputs_as_sources': 0,
},
],
},
{
'target_name': 'genperf_libs',
'type': 'static_library',
'toolsets': ['host'],
'dependencies': [ 'config_sources', ],
'sources': [
'../third_party/externals/yasm/source/patched-yasm/libyasm/phash.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/xmalloc.c',
'../third_party/externals/yasm/source/patched-yasm/libyasm/xstrdup.c',
],
'include_dirs': [
'<@(yasm_include_dirs)',
],
'defines': [ '<@(yasm_defines)' ],
'cflags': [
'<@(yasm_cflags)',
],
'cflags!': [
'-mfpu=neon',
'-mthumb',
'-march=armv7-a',
],
},
{
'target_name': 'genstring',
'type': 'executable',
'toolsets': ['host'],
'dependencies': [ 'config_sources', ],
'sources': [
'../third_party/externals/yasm/source/patched-yasm/genstring.c',
],
'include_dirs': [
'<@(yasm_include_dirs)',
],
'cflags': [
'-std=gnu99',
'-w',
],
'cflags!': [
'-mfpu=neon',
'-mthumb',
'-march=armv7-a',
],
},
{
'target_name': 'genperf',
'type': 'executable',
'toolsets': ['host'],
'dependencies': [
'genperf_libs',
],
'sources': [
'../third_party/externals/yasm/source/patched-yasm/tools/genperf/genperf.c',
'../third_party/externals/yasm/source/patched-yasm/tools/genperf/perfect.c',
],
'include_dirs': [
'<@(yasm_include_dirs)',
],
'cflags': [
'-std=gnu99',
'-w',
],
'cflags!': [
'-mfpu=neon',
'-mthumb',
'-march=armv7-a',
],
},
{
'target_name': 'genmacro',
'type': 'executable',
'toolsets': ['host'],
'dependencies': [ 'config_sources', ],
'sources': [
'../third_party/externals/yasm/source/patched-yasm/tools/genmacro/genmacro.c',
],
'include_dirs': [
'<@(yasm_include_dirs)',
],
'cflags': [
'-std=gnu99',
'-w',
],
'cflags!': [
'-mfpu=neon',
'-mthumb',
'-march=armv7-a',
],
},
{
'target_name': 'genversion',
'type': 'executable',
'toolsets': ['host'],
'dependencies': [ 'config_sources', ],
'sources': [
'../third_party/externals/yasm/source/patched-yasm/modules/preprocs/nasm/genversion.c',
],
'include_dirs': [
'<@(yasm_include_dirs)',
],
'cflags': [
'-std=gnu99',
'-w',
],
'cflags!': [
'-mfpu=neon',
'-mthumb',
'-march=armv7-a',
],
},
{
'target_name': 're2c',
'type': 'executable',
'toolsets': ['host'],
'dependencies': [ 'config_sources', ],
'sources': [
'../third_party/externals/yasm/source/patched-yasm/tools/re2c/main.c',
'../third_party/externals/yasm/source/patched-yasm/tools/re2c/code.c',
'../third_party/externals/yasm/source/patched-yasm/tools/re2c/dfa.c',
'../third_party/externals/yasm/source/patched-yasm/tools/re2c/parser.c',
'../third_party/externals/yasm/source/patched-yasm/tools/re2c/actions.c',
'../third_party/externals/yasm/source/patched-yasm/tools/re2c/scanner.c',
'../third_party/externals/yasm/source/patched-yasm/tools/re2c/mbo_getopt.c',
'../third_party/externals/yasm/source/patched-yasm/tools/re2c/substr.c',
'../third_party/externals/yasm/source/patched-yasm/tools/re2c/translate.c',
],
'include_dirs': [
'<@(yasm_include_dirs)',
],
'cflags': [
'-std=gnu99',
'-w',
],
'cflags!': [
'-mfpu=neon',
'-mthumb',
'-march=armv7-a',
],
'xcode_settings': {
'WARNING_CFLAGS': [
'-w',
],
},
'variables': {
# re2c is missing CLOSEVOP from one switch.
'clang_warning_flags': [ '-Wno-switch' ],
},
'msvs_disabled_warnings': [ 4267 ],
},
{
'target_name': 'genmodule',
'type': 'executable',
'toolsets': ['host'],
'dependencies': [
'config_sources',
],
'sources': [
'../third_party/externals/yasm/source/patched-yasm/libyasm/genmodule.c',
],
'include_dirs': [
'<@(yasm_include_dirs)',
],
'cflags': [
'-std=gnu99',
],
'cflags!': [
'-mfpu=neon',
'-mthumb',
'-march=armv7-a',
],
},
],
}

View File

@ -13,7 +13,9 @@
#include "SkCodec_libpng.h"
#include "SkCodec_wbmp.h"
#include "SkCodecPriv.h"
#ifndef SK_BUILD_FOR_ANDROID_FRAMEWORK
#include "SkJpegCodec.h"
#endif
#include "SkStream.h"
#include "SkWebpCodec.h"
@ -24,7 +26,9 @@ struct DecoderProc {
static const DecoderProc gDecoderProcs[] = {
{ SkPngCodec::IsPng, SkPngCodec::NewFromStream },
#ifndef SK_BUILD_FOR_ANDROID_FRAMEWORK
{ SkJpegCodec::IsJpeg, SkJpegCodec::NewFromStream },
#endif
{ SkWebpCodec::IsWebp, SkWebpCodec::NewFromStream },
{ SkGifCodec::IsGif, SkGifCodec::NewFromStream },
{ SkIcoCodec::IsIco, SkIcoCodec::NewFromStream },

View File

@ -15,53 +15,23 @@
#include "SkTemplates.h"
#include "SkTypes.h"
// stdio is needed for jpeglib
// stdio is needed for libjpeg-turbo
#include <stdio.h>
extern "C" {
#include "jpeglibmangler.h"
#include "jerror.h"
#include "jmorecfg.h"
#include "jpegint.h"
#include "jpeglib.h"
}
// ANDROID_RGB
// If this is defined in the jpeg headers it indicates that jpeg offers
// support for two additional formats: JCS_RGBA_8888 and JCS_RGB_565.
/*
* Get the source configuarion for the swizzler
*/
SkSwizzler::SrcConfig get_src_config(const jpeg_decompress_struct& dinfo) {
if (JCS_CMYK == dinfo.out_color_space) {
// We will need to perform a manual conversion
return SkSwizzler::kRGBX;
}
if (3 == dinfo.out_color_components && JCS_RGB == dinfo.out_color_space) {
return SkSwizzler::kRGB;
}
#ifdef ANDROID_RGB
if (JCS_RGBA_8888 == dinfo.out_color_space) {
return SkSwizzler::kRGBX;
}
if (JCS_RGB_565 == dinfo.out_color_space) {
return SkSwizzler::kRGB_565;
}
#endif
if (1 == dinfo.out_color_components && JCS_GRAYSCALE == dinfo.out_color_space) {
return SkSwizzler::kGray;
}
return SkSwizzler::kUnknown;
}
/*
* Convert a row of CMYK samples to RGBX in place.
* Convert a row of CMYK samples to RGBA in place.
* Note that this method moves the row pointer.
* @param width the number of pixels in the row that is being converted
* CMYK is stored as four bytes per pixel
*/
static void convert_CMYK_to_RGB(uint8_t* row, uint32_t width) {
static void convert_CMYK_to_RGBA(uint8_t* row, uint32_t width) {
// We will implement a crude conversion from CMYK -> RGB using formulas
// from easyrgb.com.
//
@ -104,9 +74,16 @@ static void convert_CMYK_to_RGB(uint8_t* row, uint32_t width) {
// G = M * K / 255
// B = Y * K / 255
for (uint32_t x = 0; x < width; x++, row += 4) {
#if defined(SK_PMCOLOR_IS_RGBA)
row[0] = SkMulDiv255Round(row[0], row[3]);
row[1] = SkMulDiv255Round(row[1], row[3]);
row[2] = SkMulDiv255Round(row[2], row[3]);
#else
uint8_t tmp = row[0];
row[0] = SkMulDiv255Round(row[2], row[3]);
row[1] = SkMulDiv255Round(row[1], row[3]);
row[2] = SkMulDiv255Round(tmp, row[3]);
#endif
row[3] = 0xFF;
}
}
@ -133,7 +110,7 @@ bool SkJpegCodec::ReadHeader(SkStream* stream, SkCodec** codecOut,
decoderMgr->init();
// Read the jpeg header
if (JPEG_HEADER_OK != jpeg_read_header(decoderMgr->dinfo(), true)) {
if (JPEG_HEADER_OK != turbo_jpeg_read_header(decoderMgr->dinfo(), true)) {
return decoderMgr->returnFalse("read_header");
}
@ -168,24 +145,32 @@ SkJpegCodec::SkJpegCodec(const SkImageInfo& srcInfo, SkStream* stream,
JpegDecoderMgr* decoderMgr)
: INHERITED(srcInfo, stream)
, fDecoderMgr(decoderMgr)
, fSwizzler(NULL)
, fSrcRowBytes(0)
{}
/*
* Return a valid set of output dimensions for this decoder, given an input scale
*/
SkISize SkJpegCodec::onGetScaledDimensions(float desiredScale) const {
// libjpeg supports scaling by 1/1, 1/2, 1/4, and 1/8, so we will support these as well
long scale;
if (desiredScale > 0.75f) {
scale = 1;
// libjpeg-turbo supports scaling by 1/8, 1/4, 3/8, 1/2, 5/8, 3/4, 7/8, and 1/1, so we will
// support these as well
long num;
long denom = 8;
if (desiredScale > 0.875f) {
num = 8;
} else if (desiredScale > 0.75f) {
num = 7;
} else if (desiredScale > 0.625f) {
num = 6;
} else if (desiredScale > 0.5f) {
num = 5;
} else if (desiredScale > 0.375f) {
scale = 2;
} else if (desiredScale > 0.1875f) {
scale = 4;
num = 4;
} else if (desiredScale > 0.25f) {
num = 3;
} else if (desiredScale > 0.125f) {
num = 2;
} else {
scale = 8;
num = 1;
}
// Set up a fake decompress struct in order to use libjpeg to calculate output dimensions
@ -195,39 +180,14 @@ SkISize SkJpegCodec::onGetScaledDimensions(float desiredScale) const {
dinfo.image_height = this->getInfo().height();
dinfo.global_state = DSTATE_READY;
dinfo.num_components = 0;
dinfo.scale_num = 1;
dinfo.scale_denom = scale;
jpeg_calc_output_dimensions(&dinfo);
dinfo.scale_num = num;
dinfo.scale_denom = denom;
turbo_jpeg_calc_output_dimensions(&dinfo);
// Return the calculated output dimensions for the given scale
return SkISize::Make(dinfo.output_width, dinfo.output_height);
}
/*
* Checks if the conversion between the input image and the requested output
* image has been implemented
*/
static bool conversion_possible(const SkImageInfo& dst,
const SkImageInfo& src) {
// Ensure that the profile type is unchanged
if (dst.profileType() != src.profileType()) {
return false;
}
// Ensure that the alpha type is opaque
if (kOpaque_SkAlphaType != dst.alphaType()) {
return false;
}
// Always allow kN32 as the color type
if (kN32_SkColorType == dst.colorType()) {
return true;
}
// Otherwise require that the destination color type match our recommendation
return dst.colorType() == src.colorType();
}
/*
* Handles rewinding the input stream if it is necessary
*/
@ -252,44 +212,90 @@ bool SkJpegCodec::handleRewind() {
}
}
/*
* Checks if the conversion between the input image and the requested output
* image has been implemented
* Sets the output color space
*/
bool SkJpegCodec::setOutputColorSpace(const SkImageInfo& dst) {
const SkImageInfo& src = this->getInfo();
// Ensure that the profile type is unchanged
if (dst.profileType() != src.profileType()) {
return false;
}
// Ensure that the alpha type is opaque
if (kOpaque_SkAlphaType != dst.alphaType()) {
return false;
}
// Check if we will decode to CMYK because a conversion to RGBA is not supported
J_COLOR_SPACE colorSpace = fDecoderMgr->dinfo()->jpeg_color_space;
bool isCMYK = JCS_CMYK == colorSpace || JCS_YCCK == colorSpace;
// Check for valid color types and set the output color space
switch (dst.colorType()) {
case kN32_SkColorType:
if (isCMYK) {
fDecoderMgr->dinfo()->out_color_space = JCS_CMYK;
} else {
// Check the byte ordering of the RGBA color space for the
// current platform
#if defined(SK_PMCOLOR_IS_RGBA)
fDecoderMgr->dinfo()->out_color_space = JCS_EXT_RGBA;
#else
fDecoderMgr->dinfo()->out_color_space = JCS_EXT_BGRA;
#endif
}
return true;
case kRGB_565_SkColorType:
if (isCMYK) {
return false;
} else {
fDecoderMgr->dinfo()->out_color_space = JCS_RGB565;
}
return true;
case kGray_8_SkColorType:
if (isCMYK) {
return false;
} else {
// We will enable decodes to gray even if the image is color because this is
// much faster than decoding to color and then converting
fDecoderMgr->dinfo()->out_color_space = JCS_GRAYSCALE;
}
return true;
default:
return false;
}
}
/*
* Checks if we can scale to the requested dimensions and scales the dimensions
* if possible
*/
bool SkJpegCodec::scaleToDimensions(uint32_t dstWidth, uint32_t dstHeight) {
// libjpeg can scale to 1/1, 1/2, 1/4, and 1/8
SkASSERT(1 == fDecoderMgr->dinfo()->scale_num);
SkASSERT(1 == fDecoderMgr->dinfo()->scale_denom);
jpeg_calc_output_dimensions(fDecoderMgr->dinfo());
// libjpeg-turbo can scale to 1/8, 1/4, 3/8, 1/2, 5/8, 3/4, 7/8, and 1/1
fDecoderMgr->dinfo()->scale_denom = 8;
fDecoderMgr->dinfo()->scale_num = 8;
turbo_jpeg_calc_output_dimensions(fDecoderMgr->dinfo());
while (fDecoderMgr->dinfo()->output_width != dstWidth ||
fDecoderMgr->dinfo()->output_height != dstHeight) {
// Return a failure if we have tried all of the possible scales
if (8 == fDecoderMgr->dinfo()->scale_denom ||
if (1 == fDecoderMgr->dinfo()->scale_num ||
dstWidth > fDecoderMgr->dinfo()->output_width ||
dstHeight > fDecoderMgr->dinfo()->output_height) {
return fDecoderMgr->returnFalse("could not scale to requested dimensions");
}
// Try the next scale
fDecoderMgr->dinfo()->scale_denom *= 2;
jpeg_calc_output_dimensions(fDecoderMgr->dinfo());
fDecoderMgr->dinfo()->scale_num -= 1;
turbo_jpeg_calc_output_dimensions(fDecoderMgr->dinfo());
}
return true;
}
/*
* Create the swizzler based on the encoded format
*/
void SkJpegCodec::initializeSwizzler(const SkImageInfo& dstInfo,
void* dst, size_t dstRowBytes,
const Options& options) {
SkSwizzler::SrcConfig srcConfig = get_src_config(*fDecoderMgr->dinfo());
fSwizzler.reset(SkSwizzler::CreateSwizzler(srcConfig, NULL, dstInfo, dst, dstRowBytes,
options.fZeroInitialized));
fSrcRowBytes = SkSwizzler::BytesPerPixel(srcConfig) * dstInfo.width();
}
/*
* Performs the jpeg decode
*/
@ -316,79 +322,58 @@ SkCodec::Result SkJpegCodec::onGetPixels(const SkImageInfo& dstInfo,
return fDecoderMgr->returnFailure("setjmp", kInvalidInput);
}
// Check if we can decode to the requested destination
if (!conversion_possible(dstInfo, this->getInfo())) {
// Check if we can decode to the requested destination and set the output color space
if (!this->setOutputColorSpace(dstInfo)) {
return fDecoderMgr->returnFailure("conversion_possible", kInvalidConversion);
}
// Perform the necessary scaling
if (!this->scaleToDimensions(dstInfo.width(), dstInfo.height())) {
fDecoderMgr->returnFailure("cannot scale to requested dims", kInvalidScale);
return fDecoderMgr->returnFailure("cannot scale to requested dims", kInvalidScale);
}
// Now, given valid output dimensions, we can start the decompress
if (!jpeg_start_decompress(dinfo)) {
if (!turbo_jpeg_start_decompress(dinfo)) {
return fDecoderMgr->returnFailure("startDecompress", kInvalidInput);
}
// Create the swizzler
this->initializeSwizzler(dstInfo, dst, dstRowBytes, options);
if (NULL == fSwizzler) {
return fDecoderMgr->returnFailure("getSwizzler", kUnimplemented);
}
// The recommended output buffer height should always be 1 in high quality modes.
// If it's not, we want to know because it means our strategy is not optimal.
SkASSERT(1 == dinfo->rec_outbuf_height);
// This is usually 1, but can also be 2 or 4.
// If we wanted to always read one row at a time, we could, but we will save space and time
// by using the recommendation from libjpeg.
const uint32_t rowsPerDecode = dinfo->rec_outbuf_height;
SkASSERT(rowsPerDecode <= 4);
// Create a buffer to contain decoded rows (libjpeg requires a 2D array)
SkASSERT(0 != fSrcRowBytes);
SkAutoTDeleteArray<uint8_t> srcBuffer(SkNEW_ARRAY(uint8_t, fSrcRowBytes * rowsPerDecode));
JSAMPLE* srcRows[4];
uint8_t* srcPtr = srcBuffer.get();
for (uint8_t i = 0; i < rowsPerDecode; i++) {
srcRows[i] = (JSAMPLE*) srcPtr;
srcPtr += fSrcRowBytes;
}
// Ensure that we loop enough times to decode all of the rows
// libjpeg will prevent us from reading past the bottom of the image
// Perform the decode a single row at a time
uint32_t dstHeight = dstInfo.height();
for (uint32_t y = 0; y < dstHeight + rowsPerDecode - 1; y += rowsPerDecode) {
JSAMPLE* dstRow = (JSAMPLE*) dst;
for (uint32_t y = 0; y < dstHeight; y++) {
// Read rows of the image
uint32_t rowsDecoded = jpeg_read_scanlines(dinfo, srcRows, rowsPerDecode);
// Convert to RGB if necessary
if (JCS_CMYK == dinfo->out_color_space) {
convert_CMYK_to_RGB(srcRows[0], dstInfo.width() * rowsDecoded);
}
// Swizzle to output destination
for (uint32_t i = 0; i < rowsDecoded; i++) {
fSwizzler->next(srcRows[i]);
}
uint32_t rowsDecoded = turbo_jpeg_read_scanlines(dinfo, &dstRow, 1);
// If we cannot read enough rows, assume the input is incomplete
if (rowsDecoded < rowsPerDecode && y + rowsDecoded < dstHeight) {
if (rowsDecoded != 1) {
// Fill the remainder of the image with black. This error handling
// behavior is unspecified but SkCodec consistently uses black as
// the fill color for opaque images. If the destination is kGray,
// the low 8 bits of SK_ColorBLACK will be used. Conveniently,
// these are zeros, which is the representation for black in kGray.
SkSwizzler::Fill(fSwizzler->getDstRow(), dstInfo, dstRowBytes,
dstHeight - y - rowsDecoded, SK_ColorBLACK, NULL);
SkSwizzler::Fill(dstRow, dstInfo, dstRowBytes, dstHeight - y, SK_ColorBLACK, NULL);
// Prevent libjpeg from failing on incomplete decode
dinfo->output_scanline = dstHeight;
// Finish the decode and indicate that the input was incomplete.
jpeg_finish_decompress(dinfo);
turbo_jpeg_finish_decompress(dinfo);
return fDecoderMgr->returnFailure("Incomplete image data", kIncompleteInput);
}
// Convert to RGBA if necessary
if (JCS_CMYK == dinfo->out_color_space) {
convert_CMYK_to_RGBA(dstRow, dstInfo.width());
}
// Move to the next row
dstRow = SkTAddOffset<JSAMPLE>(dstRow, dstRowBytes);
}
jpeg_finish_decompress(dinfo);
turbo_jpeg_finish_decompress(dinfo);
return kSuccess;
}
@ -408,7 +393,7 @@ SkJpegCodec::~SkJpegCodec() {
// We may not have decoded the entire image. Prevent libjpeg-turbo from failing on a
// partial decode.
fDecoderMgr->dinfo()->output_scanline = this->getInfo().height();
jpeg_finish_decompress(fDecoderMgr->dinfo());
turbo_jpeg_finish_decompress(fDecoderMgr->dinfo());
}
}
@ -420,10 +405,7 @@ public:
SkJpegScanlineDecoder(const SkImageInfo& dstInfo, SkJpegCodec* codec)
: INHERITED(dstInfo)
, fCodec(codec)
{
fStorage.reset(fCodec->fSrcRowBytes);
fSrcRow = static_cast<uint8_t*>(fStorage.get());
}
{}
SkImageGenerator::Result onGetScanlines(void* dst, int count, size_t rowBytes) override {
// Set the jump location for libjpeg errors
@ -432,46 +414,52 @@ public:
}
// Read rows one at a time
JSAMPLE* dstRow = (JSAMPLE*) dst;
for (int y = 0; y < count; y++) {
// Read row of the image
uint32_t rowsDecoded = jpeg_read_scanlines(fCodec->fDecoderMgr->dinfo(), &fSrcRow, 1);
uint32_t rowsDecoded =
turbo_jpeg_read_scanlines(fCodec->fDecoderMgr->dinfo(), &dstRow, 1);
if (rowsDecoded != 1) {
SkSwizzler::Fill(dst, this->dstInfo(), rowBytes, count - y, SK_ColorBLACK, NULL);
SkSwizzler::Fill(
dstRow, this->dstInfo(), rowBytes, count - y, SK_ColorBLACK, NULL);
fCodec->fDecoderMgr->dinfo()->output_scanline = this->dstInfo().height();
return SkImageGenerator::kIncompleteInput;
}
// Convert to RGB if necessary
// Convert to RGBA if necessary
if (JCS_CMYK == fCodec->fDecoderMgr->dinfo()->out_color_space) {
convert_CMYK_to_RGB(fSrcRow, dstInfo().width());
convert_CMYK_to_RGBA(dstRow, this->dstInfo().width());
}
// Swizzle to output destination
fCodec->fSwizzler->setDstRow(dst);
fCodec->fSwizzler->next(fSrcRow);
dst = SkTAddOffset<void>(dst, rowBytes);
// Move to the next row
dstRow = SkTAddOffset<JSAMPLE>(dstRow, rowBytes);
}
return SkImageGenerator::kSuccess;
}
#ifndef TURBO_HAS_SKIP
#define turbo_jpeg_skip_scanlines(dinfo, count) \
SkAutoMalloc storage(dinfo->output_width * dinfo->out_color_components); \
uint8_t* storagePtr = static_cast<uint8_t*>(storage.get()); \
for (int y = 0; y < count; y++) { \
turbo_jpeg_read_scanlines(dinfo, &storagePtr, 1); \
}
#endif
SkImageGenerator::Result onSkipScanlines(int count) override {
// Set the jump location for libjpeg errors
if (setjmp(fCodec->fDecoderMgr->getJmpBuf())) {
return fCodec->fDecoderMgr->returnFailure("setjmp", SkImageGenerator::kInvalidInput);
}
// Read rows but ignore the output
for (int y = 0; y < count; y++) {
jpeg_read_scanlines(fCodec->fDecoderMgr->dinfo(), &fSrcRow, 1);
}
turbo_jpeg_skip_scanlines(fCodec->fDecoderMgr->dinfo(), count);
return SkImageGenerator::kSuccess;
}
private:
SkJpegCodec* fCodec; // unowned
SkAutoMalloc fStorage;
uint8_t* fSrcRow; // ptr into fStorage
SkJpegCodec* fCodec; // unowned
typedef SkScanlineDecoder INHERITED;
};
@ -491,31 +479,24 @@ SkScanlineDecoder* SkJpegCodec::onGetScanlineDecoder(const SkImageInfo& dstInfo,
return NULL;
}
// Check if we can decode to the requested destination
if (!conversion_possible(dstInfo, this->getInfo())) {
// Check if we can decode to the requested destination and set the output color space
if (!this->setOutputColorSpace(dstInfo)) {
SkCodecPrintf("Cannot convert to output type\n");
return NULL;
}
// Perform the necessary scaling
if (!this->scaleToDimensions(dstInfo.width(), dstInfo.height())) {
SkCodecPrintf("Cannot scale ot output dimensions\n");
SkCodecPrintf("Cannot scale to output dimensions\n");
return NULL;
}
// Now, given valid output dimensions, we can start the decompress
if (!jpeg_start_decompress(fDecoderMgr->dinfo())) {
if (!turbo_jpeg_start_decompress(fDecoderMgr->dinfo())) {
SkCodecPrintf("start decompress failed\n");
return NULL;
}
// Create the swizzler
this->initializeSwizzler(dstInfo, NULL, dstInfo.minRowBytes(), options);
if (NULL == fSwizzler) {
SkCodecPrintf("Could not create swizzler\n");
return NULL;
}
// Return the new scanline decoder
return SkNEW_ARGS(SkJpegScanlineDecoder, (dstInfo, this));
}

View File

@ -105,6 +105,13 @@ private:
*/
bool handleRewind();
/*
* Checks if the conversion between the input image and the requested output
* image has been implemented
* Sets the output color space
*/
bool setOutputColorSpace(const SkImageInfo& dst);
/*
* Checks if we can scale to the requested dimensions and scales the dimensions
* if possible
@ -118,8 +125,6 @@ private:
const Options& options);
SkAutoTDelete<JpegDecoderMgr> fDecoderMgr;
SkAutoTDelete<SkSwizzler> fSwizzler;
size_t fSrcRowBytes;
friend class SkJpegScanlineDecoder;

View File

@ -39,22 +39,9 @@ SkCodec::Result JpegDecoderMgr::returnFailure(const char caller[], SkCodec::Resu
SkColorType JpegDecoderMgr::getColorType() {
switch (fDInfo.jpeg_color_space) {
case JCS_CMYK:
case JCS_YCCK:
// libjpeg cannot convert from CMYK or YCCK to RGB.
// Here, we ask libjpeg to give us CMYK samples back and
// we will later manually convert them to RGB.
fDInfo.out_color_space = JCS_CMYK;
return kN32_SkColorType;
case JCS_GRAYSCALE:
fDInfo.out_color_space = JCS_GRAYSCALE;
return kGray_8_SkColorType;
default:
#ifdef ANDROID_RGB
fDInfo.out_color_space = JCS_RGBA_8888;
#else
fDInfo.out_color_space = JCS_RGB;
#endif
return kN32_SkColorType;
}
}
@ -64,7 +51,7 @@ JpegDecoderMgr::JpegDecoderMgr(SkStream* stream)
, fInit(false)
{
// Error manager must be set before any calls to libjeg in order to handle failures
fDInfo.err = jpeg_std_error(&fErrorMgr);
fDInfo.err = turbo_jpeg_std_error(&fErrorMgr);
fErrorMgr.error_exit = skjpeg_err_exit;
}

View File

@ -18,6 +18,7 @@
#include <stdio.h>
extern "C" {
#include "jpeglibmangler.h"
#include "jpeglib.h"
}

View File

@ -73,7 +73,7 @@ skjpeg_source_mgr::skjpeg_source_mgr(SkStream* stream)
init_source = sk_init_source;
fill_input_buffer = sk_fill_input_buffer;
skip_input_data = sk_skip_input_data;
resync_to_restart = jpeg_resync_to_restart;
resync_to_restart = turbo_jpeg_resync_to_restart;
term_source = sk_term_source;
}

View File

@ -16,6 +16,7 @@
#include <stdio.h>
extern "C" {
#include "jpeglibmangler.h"
#include "jpeglib.h"
#include "jerror.h"
}

138
third_party/yasm/README.skia vendored Normal file
View File

@ -0,0 +1,138 @@
# 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.
These platform specific Makefiles are necesary to build yasm on different platforms. The rest of
the yasm code is pulled into externals via the DEPS file.
Chromium builds yasm using the below procedure. We take a few shortcuts. We mirror Chromium's
yasm repositories in our DEPS file, and we copy these config files directly from Chromium.
NOTE: We were are currently unable to build yasm for Android on x86 and x86_64. Instead we are
using a precompiled binary in the config/android directory.
TODO (msarett): Fix this!
Excerpt from [chromium] //src/third_party/yasm/README.chromium:
Instructions for recreating the yasm.gyp file.
1) Get a clean version of the yasm source tree. The clean tree can be found
at:
src/third_party/yasm/source/yasm
2) Run configure on the pristine source from a different directory (eg.,
/tmp/yasm_build). Running configure from another directory will keep
the source tree clean.
3) Next, capture all the output from a build of yasm. We will use the build
log as a reference for making the yasm.gyp file.
make yasm > yasm_build_log 2> yasm_build_err
4) Check yasm_build_err to see if there are any anomalies beyond yasm's
compiler warnings.
5) Grab the generated Makefile, libyasm-stdint.h, config.h, and put into
the correct platform location. For android platform, copy the files
generated for linux, but make sure that ENABLE_NLS is not defined to
allow mac host compiles to work. For ios, copy the files from mac.
src/third_party/yasm/source/config/[platform]
While we do not directly use the "Makefile" to build, it is needed by
the "genmodule" subprogram as input for creating the available modules
list.
6) Make sure all the subprograms are represented in yasm.gyp.
grep '^gcc' yasm_build_log |
grep -v ' -DHAVE_CONFIG_H '
The yasm build creates a bunch of subprograms that in-turn generate
more .c files in the build. Luckily the commands to generate the
subprogram do not have -DHAVE_CONFIG_H as a cflag.
From this list, make sure all the subprograms that are build have
appropriate targets in the yasm.gyp.
You will notice, when you get to the next step, that there are some
.c source files that are compiled both for yasm, and for genperf.
Those should go into the genperf_libs target so that they can be
shared by the genperf and yasm targets. Find those files by appending
| grep 'gp-'
to the command above.
7) Find all the source files used to build yasm proper.
grep -E '^gcc' yasm_build_log |
grep ' -DHAVE_CONFIG_H ' |
awk '{print $NF }' |
sed -e "s/'\.\/'\`//" | # Removes some garbage from the build line.
sort -u |
sed -e "s/\(.*\)/'\1',/" # Add quotes to each line.
Reversing the -DHAVE_CONFIG_H filter from the command above should
list the compile lines for yasm proper.
This should get you close, but you will need to manually examine this
list. However, some of the built products are still included in the
command above. Generally, if the source file is in the root directory,
it's a generated file.
Inspect the current yasm.gyp for a list of the subprograms and their
outputs.
Update the sources list in the yasm target accordingly. Read step #9
as well if you update the source list to avoid problems.
8) Update the actions for each of the subprograms.
Here is the real fun. For each subprogram created, you will need to
update the actions and rules in yasm.gyp that invoke the subprogram to
generate the files needed by the rest of the build.
I don't have any good succinct instructions for this. Grep the build
log for each subprogram invocation (eg., "./genversion"), look at
its command inputs and output, then verify our yasm.gyp does something
similar.
The good news is things likely only link or compile if this is done
right so you'll know if there is a problem.
Again, refer to the existing yasm.gyp for a guide to how the generated
files are used.
Here are a few gotchas:
1) genmodule, by default, writes module.c into the current
directory. This does not play nicely with gyp. We patch the
source during build to allow specifying a specific output file.
2) Most of the generated files, even though they are .c files, are
#included by other files in the build. Make sure they end up
in a directory that is in the include path for the build.
One of <(shared_generated_dir) or <(generated_dir) should work.
3) Some of the genperf output is #included while others need to be
compiled directly. That is why there are 2 different rules for
.gperf files in two targets.
9) Check for python scripts that are run.
grep python yasm_build_log
Yasm uses python scripts to generate the assembly code description
files in C++. Make sure to get these put into the gyp file properly as
well. An example is gen_x86_insn.py for x86 assembly.
Note that at least the gen_x86_insn.py script suffers from the same
problem as genmacro in that it outputs to the current directory by
default. The yasm.gyp build patches this file before invoking it to
allow specifying an output directory.
10) Recreate the 'AdditionalOptions!': [ '/analyze' ] block so that VC++
/analyze builds won't fail.
11) If all that's is finished, attempt to build....and cross your fingers.

3822
third_party/yasm/config/android/Makefile vendored Normal file

File diff suppressed because it is too large Load Diff

173
third_party/yasm/config/android/config.h vendored Normal file
View File

@ -0,0 +1,173 @@
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
/* Command name to run C preprocessor */
#define CPP_PROG "gcc -E"
/* */
/* #undef ENABLE_NLS */
/* Define to 1 if you have the `abort' function. */
#define HAVE_ABORT 1
/* */
/* #undef HAVE_CATGETS */
/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
CoreFoundation framework. */
/* #undef HAVE_CFLOCALECOPYCURRENT */
/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
the CoreFoundation framework. */
/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */
/* Define if the GNU dcgettext() function is already present or preinstalled.
*/
#define HAVE_DCGETTEXT 1
/* Define to 1 if you have the <direct.h> header file. */
/* #undef HAVE_DIRECT_H */
/* Define to 1 if you have the `ftruncate' function. */
#define HAVE_FTRUNCATE 1
/* Define to 1 if you have the `getcwd' function. */
#define HAVE_GETCWD 1
/* */
#define HAVE_GETTEXT 1
/* Define to 1 if you have the GNU C Library */
#define HAVE_GNU_C_LIBRARY 1
/* Define if you have the iconv() function and it works. */
/* #undef HAVE_ICONV */
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* */
/* #undef HAVE_LC_MESSAGES */
/* Define to 1 if you have the <libgen.h> header file. */
#define HAVE_LIBGEN_H 1
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have the `mergesort' function. */
/* #undef HAVE_MERGESORT */
/* Define to 1 if you have the `popen' function. */
#define HAVE_POPEN 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* */
/* #undef HAVE_STPCPY */
/* Define to 1 if you have the `strcasecmp' function. */
#define HAVE_STRCASECMP 1
/* Define to 1 if you have the `strcmpi' function. */
/* #undef HAVE_STRCMPI */
/* Define to 1 if you have the `stricmp' function. */
/* #undef HAVE_STRICMP */
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the `strncasecmp' function. */
#define HAVE_STRNCASECMP 1
/* Define to 1 if you have the `strsep' function. */
#define HAVE_STRSEP 1
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the `toascii' function. */
#define HAVE_TOASCII 1
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Define to 1 if you have the `vsnprintf' function. */
#define HAVE_VSNPRINTF 1
/* Define to 1 if you have the `_stricmp' function. */
/* #undef HAVE__STRICMP */
/* Name of package */
#define PACKAGE "yasm"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "bug-yasm@tortall.net"
/* Define to the full name of this package. */
#define PACKAGE_NAME "yasm"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "yasm 1.2.0"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "yasm"
/* Define to the home page for this package. */
#define PACKAGE_URL ""
/* Define to the version of this package. */
#define PACKAGE_VERSION "1.2.0"
/* Define to 1 if the C compiler supports function prototypes. */
#define PROTOTYPES 1
/* The size of `char', as computed by sizeof. */
/* #undef SIZEOF_CHAR */
/* The size of `int', as computed by sizeof. */
/* #undef SIZEOF_INT */
/* The size of `long', as computed by sizeof. */
/* #undef SIZEOF_LONG */
/* The size of `short', as computed by sizeof. */
/* #undef SIZEOF_SHORT */
/* The size of `void*', as computed by sizeof. */
/* #undef SIZEOF_VOIDP */
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Version number of package */
#define VERSION "1.2.0"
/* Define if using the dmalloc debugging malloc package */
/* #undef WITH_DMALLOC */
/* Define like PROTOTYPES; this can be used by system headers. */
#define __PROTOTYPES 1
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
/* #undef inline */
#endif
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */

View File

@ -0,0 +1,9 @@
#ifndef _YASM_LIBYASM_STDINT_H
#define _YASM_LIBYASM_STDINT_H 1
#ifndef _GENERATED_STDINT_H
#define _GENERATED_STDINT_H "yasm HEAD"
/* generated using gcc -std=gnu99 */
#define _STDINT_HAVE_STDINT_H 1
#include <stdint.h>
#endif
#endif

3822
third_party/yasm/config/chromeos/Makefile vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,173 @@
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
/* Command name to run C preprocessor */
#define CPP_PROG "gcc -E"
/* */
#define ENABLE_NLS 1
/* Define to 1 if you have the `abort' function. */
#define HAVE_ABORT 1
/* */
/* #undef HAVE_CATGETS */
/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
CoreFoundation framework. */
/* #undef HAVE_CFLOCALECOPYCURRENT */
/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
the CoreFoundation framework. */
/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */
/* Define if the GNU dcgettext() function is already present or preinstalled.
*/
#define HAVE_DCGETTEXT 1
/* Define to 1 if you have the <direct.h> header file. */
/* #undef HAVE_DIRECT_H */
/* Define to 1 if you have the `ftruncate' function. */
#define HAVE_FTRUNCATE 1
/* Define to 1 if you have the `getcwd' function. */
#define HAVE_GETCWD 1
/* */
#define HAVE_GETTEXT 1
/* Define to 1 if you have the GNU C Library */
#define HAVE_GNU_C_LIBRARY 1
/* Define if you have the iconv() function and it works. */
/* #undef HAVE_ICONV */
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* */
/* #undef HAVE_LC_MESSAGES */
/* Define to 1 if you have the <libgen.h> header file. */
#define HAVE_LIBGEN_H 1
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have the `mergesort' function. */
/* #undef HAVE_MERGESORT */
/* Define to 1 if you have the `popen' function. */
#define HAVE_POPEN 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* */
/* #undef HAVE_STPCPY */
/* Define to 1 if you have the `strcasecmp' function. */
#define HAVE_STRCASECMP 1
/* Define to 1 if you have the `strcmpi' function. */
/* #undef HAVE_STRCMPI */
/* Define to 1 if you have the `stricmp' function. */
/* #undef HAVE_STRICMP */
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the `strncasecmp' function. */
#define HAVE_STRNCASECMP 1
/* Define to 1 if you have the `strsep' function. */
#define HAVE_STRSEP 1
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the `toascii' function. */
#define HAVE_TOASCII 1
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Define to 1 if you have the `vsnprintf' function. */
#define HAVE_VSNPRINTF 1
/* Define to 1 if you have the `_stricmp' function. */
/* #undef HAVE__STRICMP */
/* Name of package */
#define PACKAGE "yasm"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "bug-yasm@tortall.net"
/* Define to the full name of this package. */
#define PACKAGE_NAME "yasm"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "yasm 1.2.0"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "yasm"
/* Define to the home page for this package. */
#define PACKAGE_URL ""
/* Define to the version of this package. */
#define PACKAGE_VERSION "1.2.0"
/* Define to 1 if the C compiler supports function prototypes. */
#define PROTOTYPES 1
/* The size of `char', as computed by sizeof. */
/* #undef SIZEOF_CHAR */
/* The size of `int', as computed by sizeof. */
/* #undef SIZEOF_INT */
/* The size of `long', as computed by sizeof. */
/* #undef SIZEOF_LONG */
/* The size of `short', as computed by sizeof. */
/* #undef SIZEOF_SHORT */
/* The size of `void*', as computed by sizeof. */
/* #undef SIZEOF_VOIDP */
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Version number of package */
#define VERSION "1.2.0"
/* Define if using the dmalloc debugging malloc package */
/* #undef WITH_DMALLOC */
/* Define like PROTOTYPES; this can be used by system headers. */
#define __PROTOTYPES 1
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
/* #undef inline */
#endif
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */

View File

@ -0,0 +1,9 @@
#ifndef _YASM_LIBYASM_STDINT_H
#define _YASM_LIBYASM_STDINT_H 1
#ifndef _GENERATED_STDINT_H
#define _GENERATED_STDINT_H "yasm HEAD"
/* generated using gcc -std=gnu99 */
#define _STDINT_HAVE_STDINT_H 1
#include <stdint.h>
#endif
#endif

3822
third_party/yasm/config/ios/Makefile vendored Normal file

File diff suppressed because it is too large Load Diff

173
third_party/yasm/config/ios/config.h vendored Normal file
View File

@ -0,0 +1,173 @@
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
/* Command name to run C preprocessor */
#define CPP_PROG "gcc -E"
/* */
/* #undef ENABLE_NLS */
/* Define to 1 if you have the `abort' function. */
#define HAVE_ABORT 1
/* */
/* #undef HAVE_CATGETS */
/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
CoreFoundation framework. */
#define HAVE_CFLOCALECOPYCURRENT 1
/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
the CoreFoundation framework. */
#define HAVE_CFPREFERENCESCOPYAPPVALUE 1
/* Define if the GNU dcgettext() function is already present or preinstalled.
*/
/* #undef HAVE_DCGETTEXT */
/* Define to 1 if you have the <direct.h> header file. */
/* #undef HAVE_DIRECT_H */
/* Define to 1 if you have the `ftruncate' function. */
#define HAVE_FTRUNCATE 1
/* Define to 1 if you have the `getcwd' function. */
#define HAVE_GETCWD 1
/* */
/* #undef HAVE_GETTEXT */
/* Define to 1 if you have the GNU C Library */
/* #undef HAVE_GNU_C_LIBRARY */
/* Define if you have the iconv() function and it works. */
#define HAVE_ICONV 1
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* */
/* #undef HAVE_LC_MESSAGES */
/* Define to 1 if you have the <libgen.h> header file. */
#define HAVE_LIBGEN_H 1
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have the `mergesort' function. */
#define HAVE_MERGESORT 1
/* Define to 1 if you have the `popen' function. */
#define HAVE_POPEN 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* */
/* #undef HAVE_STPCPY */
/* Define to 1 if you have the `strcasecmp' function. */
#define HAVE_STRCASECMP 1
/* Define to 1 if you have the `strcmpi' function. */
/* #undef HAVE_STRCMPI */
/* Define to 1 if you have the `stricmp' function. */
/* #undef HAVE_STRICMP */
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the `strncasecmp' function. */
#define HAVE_STRNCASECMP 1
/* Define to 1 if you have the `strsep' function. */
#define HAVE_STRSEP 1
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the `toascii' function. */
#define HAVE_TOASCII 1
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Define to 1 if you have the `vsnprintf' function. */
#define HAVE_VSNPRINTF 1
/* Define to 1 if you have the `_stricmp' function. */
/* #undef HAVE__STRICMP */
/* Name of package */
#define PACKAGE "yasm"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "bug-yasm@tortall.net"
/* Define to the full name of this package. */
#define PACKAGE_NAME "yasm"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "yasm 1.2.0"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "yasm"
/* Define to the home page for this package. */
#define PACKAGE_URL ""
/* Define to the version of this package. */
#define PACKAGE_VERSION "1.2.0"
/* Define to 1 if the C compiler supports function prototypes. */
#define PROTOTYPES 1
/* The size of `char', as computed by sizeof. */
/* #undef SIZEOF_CHAR */
/* The size of `int', as computed by sizeof. */
/* #undef SIZEOF_INT */
/* The size of `long', as computed by sizeof. */
/* #undef SIZEOF_LONG */
/* The size of `short', as computed by sizeof. */
/* #undef SIZEOF_SHORT */
/* The size of `void*', as computed by sizeof. */
/* #undef SIZEOF_VOIDP */
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Version number of package */
#define VERSION "1.2.0"
/* Define if using the dmalloc debugging malloc package */
/* #undef WITH_DMALLOC */
/* Define like PROTOTYPES; this can be used by system headers. */
#define __PROTOTYPES 1
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
/* #undef inline */
#endif
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */

View File

@ -0,0 +1,9 @@
#ifndef _YASM_LIBYASM_STDINT_H
#define _YASM_LIBYASM_STDINT_H 1
#ifndef _GENERATED_STDINT_H
#define _GENERATED_STDINT_H "yasm 0.8.0"
/* generated using gcc -std=gnu99 */
#define _STDINT_HAVE_STDINT_H 1
#include <stdint.h>
#endif
#endif

3822
third_party/yasm/config/linux/Makefile vendored Normal file

File diff suppressed because it is too large Load Diff

173
third_party/yasm/config/linux/config.h vendored Normal file
View File

@ -0,0 +1,173 @@
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
/* Command name to run C preprocessor */
#define CPP_PROG "gcc -E"
/* */
#define ENABLE_NLS 1
/* Define to 1 if you have the `abort' function. */
#define HAVE_ABORT 1
/* */
/* #undef HAVE_CATGETS */
/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
CoreFoundation framework. */
/* #undef HAVE_CFLOCALECOPYCURRENT */
/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
the CoreFoundation framework. */
/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */
/* Define if the GNU dcgettext() function is already present or preinstalled.
*/
#define HAVE_DCGETTEXT 1
/* Define to 1 if you have the <direct.h> header file. */
/* #undef HAVE_DIRECT_H */
/* Define to 1 if you have the `ftruncate' function. */
#define HAVE_FTRUNCATE 1
/* Define to 1 if you have the `getcwd' function. */
#define HAVE_GETCWD 1
/* */
#define HAVE_GETTEXT 1
/* Define to 1 if you have the GNU C Library */
#define HAVE_GNU_C_LIBRARY 1
/* Define if you have the iconv() function and it works. */
/* #undef HAVE_ICONV */
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* */
/* #undef HAVE_LC_MESSAGES */
/* Define to 1 if you have the <libgen.h> header file. */
#define HAVE_LIBGEN_H 1
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have the `mergesort' function. */
/* #undef HAVE_MERGESORT */
/* Define to 1 if you have the `popen' function. */
#define HAVE_POPEN 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* */
/* #undef HAVE_STPCPY */
/* Define to 1 if you have the `strcasecmp' function. */
#define HAVE_STRCASECMP 1
/* Define to 1 if you have the `strcmpi' function. */
/* #undef HAVE_STRCMPI */
/* Define to 1 if you have the `stricmp' function. */
/* #undef HAVE_STRICMP */
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the `strncasecmp' function. */
#define HAVE_STRNCASECMP 1
/* Define to 1 if you have the `strsep' function. */
#define HAVE_STRSEP 1
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the `toascii' function. */
#define HAVE_TOASCII 1
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Define to 1 if you have the `vsnprintf' function. */
#define HAVE_VSNPRINTF 1
/* Define to 1 if you have the `_stricmp' function. */
/* #undef HAVE__STRICMP */
/* Name of package */
#define PACKAGE "yasm"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "bug-yasm@tortall.net"
/* Define to the full name of this package. */
#define PACKAGE_NAME "yasm"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "yasm 1.2.0"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "yasm"
/* Define to the home page for this package. */
#define PACKAGE_URL ""
/* Define to the version of this package. */
#define PACKAGE_VERSION "1.2.0"
/* Define to 1 if the C compiler supports function prototypes. */
#define PROTOTYPES 1
/* The size of `char', as computed by sizeof. */
/* #undef SIZEOF_CHAR */
/* The size of `int', as computed by sizeof. */
/* #undef SIZEOF_INT */
/* The size of `long', as computed by sizeof. */
/* #undef SIZEOF_LONG */
/* The size of `short', as computed by sizeof. */
/* #undef SIZEOF_SHORT */
/* The size of `void*', as computed by sizeof. */
/* #undef SIZEOF_VOIDP */
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Version number of package */
#define VERSION "1.2.0"
/* Define if using the dmalloc debugging malloc package */
/* #undef WITH_DMALLOC */
/* Define like PROTOTYPES; this can be used by system headers. */
#define __PROTOTYPES 1
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
/* #undef inline */
#endif
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */

View File

@ -0,0 +1,9 @@
#ifndef _YASM_LIBYASM_STDINT_H
#define _YASM_LIBYASM_STDINT_H 1
#ifndef _GENERATED_STDINT_H
#define _GENERATED_STDINT_H "yasm HEAD"
/* generated using gcc -std=gnu99 */
#define _STDINT_HAVE_STDINT_H 1
#include <stdint.h>
#endif
#endif

3822
third_party/yasm/config/mac/Makefile vendored Normal file

File diff suppressed because it is too large Load Diff

173
third_party/yasm/config/mac/config.h vendored Normal file
View File

@ -0,0 +1,173 @@
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
/* Command name to run C preprocessor */
#define CPP_PROG "gcc -E"
/* */
/* #undef ENABLE_NLS */
/* Define to 1 if you have the `abort' function. */
#define HAVE_ABORT 1
/* */
/* #undef HAVE_CATGETS */
/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
CoreFoundation framework. */
#define HAVE_CFLOCALECOPYCURRENT 1
/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
the CoreFoundation framework. */
#define HAVE_CFPREFERENCESCOPYAPPVALUE 1
/* Define if the GNU dcgettext() function is already present or preinstalled.
*/
/* #undef HAVE_DCGETTEXT */
/* Define to 1 if you have the <direct.h> header file. */
/* #undef HAVE_DIRECT_H */
/* Define to 1 if you have the `ftruncate' function. */
#define HAVE_FTRUNCATE 1
/* Define to 1 if you have the `getcwd' function. */
#define HAVE_GETCWD 1
/* */
/* #undef HAVE_GETTEXT */
/* Define to 1 if you have the GNU C Library */
/* #undef HAVE_GNU_C_LIBRARY */
/* Define if you have the iconv() function and it works. */
#define HAVE_ICONV 1
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* */
/* #undef HAVE_LC_MESSAGES */
/* Define to 1 if you have the <libgen.h> header file. */
#define HAVE_LIBGEN_H 1
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have the `mergesort' function. */
#define HAVE_MERGESORT 1
/* Define to 1 if you have the `popen' function. */
#define HAVE_POPEN 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* */
/* #undef HAVE_STPCPY */
/* Define to 1 if you have the `strcasecmp' function. */
#define HAVE_STRCASECMP 1
/* Define to 1 if you have the `strcmpi' function. */
/* #undef HAVE_STRCMPI */
/* Define to 1 if you have the `stricmp' function. */
/* #undef HAVE_STRICMP */
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the `strncasecmp' function. */
#define HAVE_STRNCASECMP 1
/* Define to 1 if you have the `strsep' function. */
#define HAVE_STRSEP 1
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the `toascii' function. */
#define HAVE_TOASCII 1
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Define to 1 if you have the `vsnprintf' function. */
#define HAVE_VSNPRINTF 1
/* Define to 1 if you have the `_stricmp' function. */
/* #undef HAVE__STRICMP */
/* Name of package */
#define PACKAGE "yasm"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "bug-yasm@tortall.net"
/* Define to the full name of this package. */
#define PACKAGE_NAME "yasm"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "yasm 1.2.0"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "yasm"
/* Define to the home page for this package. */
#define PACKAGE_URL ""
/* Define to the version of this package. */
#define PACKAGE_VERSION "1.2.0"
/* Define to 1 if the C compiler supports function prototypes. */
#define PROTOTYPES 1
/* The size of `char', as computed by sizeof. */
/* #undef SIZEOF_CHAR */
/* The size of `int', as computed by sizeof. */
/* #undef SIZEOF_INT */
/* The size of `long', as computed by sizeof. */
/* #undef SIZEOF_LONG */
/* The size of `short', as computed by sizeof. */
/* #undef SIZEOF_SHORT */
/* The size of `void*', as computed by sizeof. */
/* #undef SIZEOF_VOIDP */
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Version number of package */
#define VERSION "1.2.0"
/* Define if using the dmalloc debugging malloc package */
/* #undef WITH_DMALLOC */
/* Define like PROTOTYPES; this can be used by system headers. */
#define __PROTOTYPES 1
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
/* #undef inline */
#endif
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */

View File

@ -0,0 +1,9 @@
#ifndef _YASM_LIBYASM_STDINT_H
#define _YASM_LIBYASM_STDINT_H 1
#ifndef _GENERATED_STDINT_H
#define _GENERATED_STDINT_H "yasm 0.8.0"
/* generated using gcc -std=gnu99 */
#define _STDINT_HAVE_STDINT_H 1
#include <stdint.h>
#endif
#endif

3822
third_party/yasm/config/openbsd/Makefile vendored Normal file

File diff suppressed because it is too large Load Diff

165
third_party/yasm/config/openbsd/config.h vendored Normal file
View File

@ -0,0 +1,165 @@
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
/* Command name to run C preprocessor */
#define CPP_PROG "cc -E"
/* */
/* #undef ENABLE_NLS */
/* Define to 1 if you have the `abort' function. */
#define HAVE_ABORT 1
/* */
/* #undef HAVE_CATGETS */
/* Define if the GNU dcgettext() function is already present or preinstalled.
*/
/* #undef HAVE_DCGETTEXT */
/* Define to 1 if you have the <direct.h> header file. */
/* #undef HAVE_DIRECT_H */
/* Define to 1 if you have the `ftruncate' function. */
#define HAVE_FTRUNCATE 1
/* Define to 1 if you have the `getcwd' function. */
#define HAVE_GETCWD 1
/* */
/* #undef HAVE_GETTEXT */
/* Define to 1 if you have the GNU C Library */
/* #undef HAVE_GNU_C_LIBRARY */
/* Define if you have the iconv() function and it works. */
/* #undef HAVE_ICONV */
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* */
/* #undef HAVE_LC_MESSAGES */
/* Define to 1 if you have the <libgen.h> header file. */
#define HAVE_LIBGEN_H 1
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have the `mergesort' function. */
#define HAVE_MERGESORT 1
/* Define to 1 if you have the `popen' function. */
#define HAVE_POPEN 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* */
/* #undef HAVE_STPCPY */
/* Define to 1 if you have the `strcasecmp' function. */
#define HAVE_STRCASECMP 1
/* Define to 1 if you have the `strcmpi' function. */
/* #undef HAVE_STRCMPI */
/* Define to 1 if you have the `stricmp' function. */
/* #undef HAVE_STRICMP */
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the `strncasecmp' function. */
#define HAVE_STRNCASECMP 1
/* Define to 1 if you have the `strsep' function. */
#define HAVE_STRSEP 1
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the `toascii' function. */
#define HAVE_TOASCII 1
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Define to 1 if you have the `vsnprintf' function. */
#define HAVE_VSNPRINTF 1
/* Define to 1 if you have the `_stricmp' function. */
/* #undef HAVE__STRICMP */
/* Name of package */
#define PACKAGE "yasm"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "bug-yasm@tortall.net"
/* Define to the full name of this package. */
#define PACKAGE_NAME "yasm"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "yasm 1.2.0"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "yasm"
/* Define to the home page for this package. */
#define PACKAGE_URL ""
/* Define to the version of this package. */
#define PACKAGE_VERSION "1.2.0"
/* Define to 1 if the C compiler supports function prototypes. */
#define PROTOTYPES 1
/* The size of `char', as computed by sizeof. */
/* #undef SIZEOF_CHAR */
/* The size of `int', as computed by sizeof. */
/* #undef SIZEOF_INT */
/* The size of `long', as computed by sizeof. */
/* #undef SIZEOF_LONG */
/* The size of `short', as computed by sizeof. */
/* #undef SIZEOF_SHORT */
/* The size of `void*', as computed by sizeof. */
/* #undef SIZEOF_VOIDP */
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Version number of package */
#define VERSION "1.2.0"
/* Define if using the dmalloc debugging malloc package */
/* #undef WITH_DMALLOC */
/* Define like PROTOTYPES; this can be used by system headers. */
#define __PROTOTYPES 1
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
/* #undef inline */
#endif
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */

View File

@ -0,0 +1,9 @@
#ifndef _YASM_LIBYASM_STDINT_H
#define _YASM_LIBYASM_STDINT_H 1
#ifndef _GENERATED_STDINT_H
#define _GENERATED_STDINT_H "yasm 1.1.0"
/* generated using gcc -std=gnu99 */
#define _STDINT_HAVE_STDINT_H 1
#include <stdint.h>
#endif
#endif

3822
third_party/yasm/config/win/Makefile vendored Normal file

File diff suppressed because it is too large Load Diff

173
third_party/yasm/config/win/config.h vendored Normal file
View File

@ -0,0 +1,173 @@
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
/* Command name to run C preprocessor */
#define CPP_PROG "gcc -E"
/* */
/* #undef ENABLE_NLS */
/* Define to 1 if you have the `abort' function. */
#define HAVE_ABORT 1
/* */
/* #undef HAVE_CATGETS */
/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
CoreFoundation framework. */
/* #undef HAVE_CFLOCALECOPYCURRENT */
/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
the CoreFoundation framework. */
/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */
/* Define if the GNU dcgettext() function is already present or preinstalled.
*/
#define HAVE_DCGETTEXT 1
/* Define to 1 if you have the <direct.h> header file. */
#define HAVE_DIRECT_H 1
/* Define to 1 if you have the `ftruncate' function. */
/* #undef HAVE_FTRUNCATE */
/* Define to 1 if you have the `getcwd' function. */
#define HAVE_GETCWD 1
/* */
#define HAVE_GETTEXT 1
/* Define to 1 if you have the GNU C Library */
#define HAVE_GNU_C_LIBRARY 0
/* Define if you have the iconv() function and it works. */
/* #undef HAVE_ICONV */
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* */
/* #undef HAVE_LC_MESSAGES */
/* Define to 1 if you have the <libgen.h> header file. */
/* #undef HAVE_LIBGEN_H */
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have the `mergesort' function. */
/* #undef HAVE_MERGESORT */
/* Define to 1 if you have the `popen' function. */
/* #undef HAVE_POPEN */
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* */
/* #undef HAVE_STPCPY */
/* Define to 1 if you have the `strcasecmp' function. */
/* #undef HAVE_STRCASECMP */
/* Define to 1 if you have the `strcmpi' function. */
/* #undef HAVE_STRCMPI */
/* Define to 1 if you have the `stricmp' function. */
/* #undef HAVE_STRICMP */
/* Define to 1 if you have the <strings.h> header file. */
/* #undef HAVE_STRINGS_H */
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the `strncasecmp' function. */
#define HAVE_STRNCASECMP 1
/* Define to 1 if you have the `strsep' function. */
/* #undef HAVE_STRSEP */
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the `toascii' function. */
#define HAVE_TOASCII 1
/* Define to 1 if you have the <unistd.h> header file. */
/* #undef HAVE_UNISTD_H */
/* Define to 1 if you have the `vsnprintf' function. */
#define HAVE_VSNPRINTF 1
/* Define to 1 if you have the `_stricmp' function. */
/* #undef HAVE__STRICMP */
/* Name of package */
#define PACKAGE "yasm"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "bug-yasm@tortall.net"
/* Define to the full name of this package. */
#define PACKAGE_NAME "yasm"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "yasm 1.2.0"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "yasm"
/* Define to the home page for this package. */
#define PACKAGE_URL ""
/* Define to the version of this package. */
#define PACKAGE_VERSION "1.2.0"
/* Define to 1 if the C compiler supports function prototypes. */
#define PROTOTYPES 1
/* The size of `char', as computed by sizeof. */
/* #undef SIZEOF_CHAR */
/* The size of `int', as computed by sizeof. */
/* #undef SIZEOF_INT */
/* The size of `long', as computed by sizeof. */
/* #undef SIZEOF_LONG */
/* The size of `short', as computed by sizeof. */
/* #undef SIZEOF_SHORT */
/* The size of `void*', as computed by sizeof. */
/* #undef SIZEOF_VOIDP */
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Version number of package */
#define VERSION "1.2.0"
/* Define if using the dmalloc debugging malloc package */
/* #undef WITH_DMALLOC */
/* Define like PROTOTYPES; this can be used by system headers. */
#define __PROTOTYPES 1
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
/* #undef inline */
#endif
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */

View File

@ -0,0 +1,9 @@
#ifndef _YASM_LIBYASM_STDINT_H
#define _YASM_LIBYASM_STDINT_H 1
#ifndef _GENERATED_STDINT_H
#define _GENERATED_STDINT_H "yasm HEAD"
/* generated using gcc -std=gnu99 */
#define _STDINT_HAVE_STDINT_H 1
#include <stdint.h>
#endif
#endif

30
third_party/yasm/config/win/stdint.h vendored Normal file
View File

@ -0,0 +1,30 @@
// Copyright (c) 2011 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.
// YASM is written in C99 and requires <stdint.h> and <inttypes.h>.
#ifndef THIRD_PARTY_YASM_SOURCE_CONFIG_WIN_STDINT_H_
#define THIRD_PARTY_YASM_SOURCE_CONFIG_WIN_STDINT_H_
#if !defined(_MSC_VER)
#error This file should only be included when compiling with MSVC.
#endif
// Define C99 equivalent types.
typedef signed char int8_t;
typedef signed short int16_t;
typedef signed int int32_t;
typedef signed long long int64_t;
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t;
// Define the C99 INT64_C macro that is used for declaring 64-bit literals.
// Technically, these should only be definied when __STDC_CONSTANT_MACROS
// is defined.
#define INT64_C(value) value##LL
#define UINT64_C(value) value##ULL
#endif // THIRD_PARTY_YASM_SOURCE_CONFIG_WIN_STDINT_H_