# 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': [
      'source/config/<(OS)',
      '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=c89',
      '-pedantic',
    ],

    # 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++', ],
    # https://crbug.com/489901
    'cflags!': [ '-fsanitize=bounds' ],
  },
  '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',
          # reg3264type in x86expr.c is unused.
          '-Wno-unused-local-typedef',
        ],
      },
      'conditions': [
        ['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:WX-' ]
            },
          },
        }],
      ],
      'sources': [
         'source/patched-yasm/frontends/yasm/yasm-options.c',
         'source/patched-yasm/frontends/yasm/yasm.c',
         'source/patched-yasm/libyasm/assocdat.c',
         'source/patched-yasm/libyasm/bc-align.c',
         'source/patched-yasm/libyasm/bc-data.c',
         'source/patched-yasm/libyasm/bc-incbin.c',
         'source/patched-yasm/libyasm/bc-org.c',
         'source/patched-yasm/libyasm/bc-reserve.c',
         'source/patched-yasm/libyasm/bitvect.c',
         'source/patched-yasm/libyasm/bytecode.c',
         'source/patched-yasm/libyasm/errwarn.c',
         'source/patched-yasm/libyasm/expr.c',
         'source/patched-yasm/libyasm/file.c',
         'source/patched-yasm/libyasm/floatnum.c',
         'source/patched-yasm/libyasm/hamt.c',
         'source/patched-yasm/libyasm/insn.c',
         'source/patched-yasm/libyasm/intnum.c',
         'source/patched-yasm/libyasm/inttree.c',
         'source/patched-yasm/libyasm/linemap.c',
         'source/patched-yasm/libyasm/md5.c',
         'source/patched-yasm/libyasm/mergesort.c',
         'source/patched-yasm/libyasm/section.c',
         'source/patched-yasm/libyasm/strcasecmp.c',
         'source/patched-yasm/libyasm/strsep.c',
         'source/patched-yasm/libyasm/symrec.c',
         'source/patched-yasm/libyasm/valparam.c',
         'source/patched-yasm/libyasm/value.c',
         'source/patched-yasm/modules/arch/lc3b/lc3barch.c',
         'source/patched-yasm/modules/arch/lc3b/lc3bbc.c',
         'source/patched-yasm/modules/arch/x86/x86arch.c',
         'source/patched-yasm/modules/arch/x86/x86bc.c',
         'source/patched-yasm/modules/arch/x86/x86expr.c',
         'source/patched-yasm/modules/arch/x86/x86id.c',
         'source/patched-yasm/modules/dbgfmts/codeview/cv-dbgfmt.c',
         'source/patched-yasm/modules/dbgfmts/codeview/cv-symline.c',
         'source/patched-yasm/modules/dbgfmts/codeview/cv-type.c',
         'source/patched-yasm/modules/dbgfmts/dwarf2/dwarf2-aranges.c',
         'source/patched-yasm/modules/dbgfmts/dwarf2/dwarf2-dbgfmt.c',
         'source/patched-yasm/modules/dbgfmts/dwarf2/dwarf2-info.c',
         'source/patched-yasm/modules/dbgfmts/dwarf2/dwarf2-line.c',
         'source/patched-yasm/modules/dbgfmts/null/null-dbgfmt.c',
         'source/patched-yasm/modules/dbgfmts/stabs/stabs-dbgfmt.c',
         'source/patched-yasm/modules/listfmts/nasm/nasm-listfmt.c',
         'source/patched-yasm/modules/objfmts/bin/bin-objfmt.c',
         'source/patched-yasm/modules/objfmts/coff/coff-objfmt.c',
         'source/patched-yasm/modules/objfmts/coff/win64-except.c',
         'source/patched-yasm/modules/objfmts/dbg/dbg-objfmt.c',
         'source/patched-yasm/modules/objfmts/elf/elf-objfmt.c',
         'source/patched-yasm/modules/objfmts/elf/elf-x86-amd64.c',
         'source/patched-yasm/modules/objfmts/elf/elf-x86-x86.c',
         'source/patched-yasm/modules/objfmts/elf/elf.c',
         'source/patched-yasm/modules/objfmts/macho/macho-objfmt.c',
         'source/patched-yasm/modules/objfmts/rdf/rdf-objfmt.c',
         'source/patched-yasm/modules/objfmts/xdf/xdf-objfmt.c',
         'source/patched-yasm/modules/parsers/gas/gas-parse.c',
         'source/patched-yasm/modules/parsers/gas/gas-parse-intel.c',
         'source/patched-yasm/modules/parsers/gas/gas-parser.c',
         'source/patched-yasm/modules/parsers/nasm/nasm-parse.c',
         'source/patched-yasm/modules/parsers/nasm/nasm-parser.c',
         'source/patched-yasm/modules/preprocs/cpp/cpp-preproc.c',
         'source/patched-yasm/modules/preprocs/nasm/nasm-eval.c',
         'source/patched-yasm/modules/preprocs/nasm/nasm-pp.c',
         'source/patched-yasm/modules/preprocs/nasm/nasm-preproc.c',
         'source/patched-yasm/modules/preprocs/nasm/nasmlib.c',
         'source/patched-yasm/modules/preprocs/raw/raw-preproc.c',

         # Sources needed by re2c.
         'source/patched-yasm/modules/parsers/gas/gas-token.re',
         '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)', ],
      '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': '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,
          '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': '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': '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': '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': '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': 'source/config/<(OS)/Makefile',
            'module_in': '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': [
        'source/config/<(OS)/Makefile',
        'source/config/<(OS)/config.h',
        'source/config/<(OS)/libyasm-stdint.h',
      ],
    },
    {
      'target_name': 'generate_files',
      'type': 'none',
      'toolsets': ['host'],
      'dependencies': [
        'genperf',
        'genversion',
      ],
      'sources': [
         'source/patched-yasm/modules/arch/x86/x86cpu.gperf',
         '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':
                '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': [
         'source/patched-yasm/libyasm/phash.c',
         'source/patched-yasm/libyasm/xmalloc.c',
         'source/patched-yasm/libyasm/xstrdup.c',
      ],
      'include_dirs': [
        '<@(yasm_include_dirs)',
      ],
      'defines': [ '<@(yasm_defines)' ],
      'cflags': [
        '<@(yasm_cflags)',
      ],
    },
    {
      'target_name': 'genstring',
      'type': 'executable',
      'toolsets': ['host'],
      'dependencies': [ 'config_sources', ],
      'sources': [
         'source/patched-yasm/genstring.c',
      ],
      'include_dirs': [
        '<@(yasm_include_dirs)',
      ],
      'cflags': [
        '-std=gnu99',
      ],
    },
    {
      'target_name': 'genperf',
      'type': 'executable',
      'toolsets': ['host'],
      'dependencies': [
        'genperf_libs',
      ],
      'sources': [
         'source/patched-yasm/tools/genperf/genperf.c',
         'source/patched-yasm/tools/genperf/perfect.c',
      ],
      'include_dirs': [
        '<@(yasm_include_dirs)',
      ],
      'cflags': [
        '-std=gnu99',
      ],
    },
    {
      'target_name': 'genmacro',
      'type': 'executable',
      'toolsets': ['host'],
      'dependencies': [ 'config_sources', ],
      'sources': [
        'source/patched-yasm/tools/genmacro/genmacro.c',
      ],
      'include_dirs': [
        '<@(yasm_include_dirs)',
      ],
      'cflags': [
        '-std=gnu99',
      ],
    },
    {
      'target_name': 'genversion',
      'type': 'executable',
      'toolsets': ['host'],
      'dependencies': [ 'config_sources', ],
      'sources': [
         'source/patched-yasm/modules/preprocs/nasm/genversion.c',
      ],
      'include_dirs': [
        '<@(yasm_include_dirs)',
      ],
      'cflags': [
        '-std=gnu99',
      ],
    },
    {
      'target_name': 're2c',
      'type': 'executable',
      'toolsets': ['host'],
      'dependencies': [ 'config_sources', ],
      'sources': [
         'source/patched-yasm/tools/re2c/main.c',
         'source/patched-yasm/tools/re2c/code.c',
         'source/patched-yasm/tools/re2c/dfa.c',
         'source/patched-yasm/tools/re2c/parser.c',
         'source/patched-yasm/tools/re2c/actions.c',
         'source/patched-yasm/tools/re2c/scanner.c',
         'source/patched-yasm/tools/re2c/mbo_getopt.c',
         'source/patched-yasm/tools/re2c/substr.c',
         'source/patched-yasm/tools/re2c/translate.c',
      ],
      'include_dirs': [
        '<@(yasm_include_dirs)',
      ],
      'cflags': [
        '-std=gnu99',
      ],
      'variables': {
        'clang_warning_flags': [
          # re2c is missing CLOSEVOP from one switch.
          '-Wno-switch',
          # re2c contains many static functions in headers (because it's
          # a C library predating C99.)
          '-Wno-unused-function',
        ],
      },
      'msvs_disabled_warnings': [ 4267 ],
    },
    {
      'target_name': 'genmodule',
      'type': 'executable',
      'toolsets': ['host'],
      'dependencies': [
        'config_sources',
      ],
      'sources': [
        'source/patched-yasm/libyasm/genmodule.c',
      ],
      'include_dirs': [
        '<@(yasm_include_dirs)',

      ],
      'cflags': [
        '-std=gnu99',
      ],
    },
  ],
}
