skia2/gyp/yasm.gyp
msarett cf2a6a47e4 Reenable yasm for Android x86 and x86-64 on Linux host
It turns out that gyp (kind of) has support for cross
compiling with a different host and target.  We simply
need to specify CC_host and CC_target instead of CC.

Making this change allows us to compile yasm on a Linux
host for Android.

We run into problems on Mac because
the linker on a Mac host requires different command line
arguments than the linker on the Android target.  In
looking through the code for gyp itself and speaking to
Ben, it doesn't appear to me that gyp supports passing
different arguments to host and target linkers.

I would imagine that we would have similar problems on
Windows.

Below is a link to a CL that would fix this issue in gyp.
It looks like it has been dropped for a long time.
Thanks to Ben for this link!
https://chromiumcodereview.appspot.com/10795044/

Also I'm adding a link to the build instructions for Chrome
(thanks again Ben).  It looks like they only support
building for Android from Linux.
https://code.google.com/p/chromium/wiki/AndroidBuildInstructions

My next steps are:
1) Getting in touch with Torne or someone else with gyp to
see if people are aware of this issue or interested in
fixing it.
2) Deciding if skia should care about this issue.
3) Deciding if skia should work around this issue.

It'd be really great to hear your thoughts on (2) and (3).
My first thought is that we shouldn't care because, as
long as we always compile the production copy of skia for
Android on Linux, we will get the fast code.  Is this
a valid conclusion?  Is there a way to write Android apps
on Mac that accidentally use the slower code?

If we do care, there are workarounds:
For Mac, we can check in a yasm binary - it's a little
smaller than the one I am deleting in this CL :-/
For Windows, we *might* be able to use the yasm.exe binary
already in externals (we get this from DEPS because this is
how chromium uses yasm on Windows).
Are there other platforms that we care about?

Let me know what you think!

BUG=skia:4028
DOCS_PREVIEW= https://skia.org/?cl=1239333002

Review URL: https://codereview.chromium.org/1239333002
2015-07-21 12:01:48 -07:00

649 lines
25 KiB
Python

# 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.
{
'xcode_settings': {
'SYMROOT': '<(DEPTH)/xcodebuild',
},
'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' ],
'libraries!': [ '-llog', ],
},
'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',
],
},
],
}