| # 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. |
| |
| # This is an gyp include to use YASM for compiling assembly files. |
| # |
| # Files to be compiled with YASM should have an extension of .asm. |
| # |
| # There are two variables for this include: |
| # yasm_flags : Pass additional flags into YASM. |
| # yasm_output_path : Output directory for the compiled object files. |
| # |
| # Sample usage: |
| # 'sources': [ |
| # 'ultra_optimized_awesome.asm', |
| # ], |
| # 'variables': { |
| # 'yasm_flags': [ |
| # '-I', 'assembly_include', |
| # ], |
| # 'yasm_output_path': '<(SHARED_INTERMEDIATE_DIR)/project', |
| # }, |
| # 'includes': [ |
| # 'third_party/yasm/yasm_compile.gypi' |
| # ], |
| |
| { |
| 'variables': { |
| 'yasm_flags': [], |
| |
| 'conditions': [ |
| [ 'use_system_yasm==0', { |
| 'yasm_path': '<(PRODUCT_DIR)/yasm', |
| }, { |
| 'yasm_path': '<!(which yasm)', |
| }], |
| |
| # Define yasm_flags that pass into YASM. |
| [ 'os_posix==1 and OS!="mac" and target_arch=="ia32"', { |
| 'yasm_flags': [ |
| '-felf32', |
| '-m', 'x86', |
| ], |
| }], |
| [ 'os_posix==1 and OS!="mac" and target_arch=="x64"', { |
| 'yasm_flags': [ |
| '-DPIC', |
| '-felf64', |
| '-m', 'amd64', |
| ], |
| }], |
| [ 'OS=="mac" and target_arch=="ia32"', { |
| 'yasm_flags': [ |
| '-fmacho32', |
| '-m', 'x86', |
| ], |
| }], |
| [ 'OS=="win" and target_arch=="ia32"', { |
| 'yasm_flags': [ |
| '-DPREFIX', |
| '-fwin32', |
| '-m', 'x86', |
| ], |
| }], |
| |
| # Define output extension. |
| ['OS=="win"', { |
| 'asm_obj_extension': 'obj', |
| }, { |
| 'asm_obj_extension': 'o', |
| }], |
| ], |
| }, # variables |
| |
| 'conditions': [ |
| # Only depend on YASM on x86 systems, do this so that compiling |
| # .asm files for ARM will fail. |
| ['use_system_yasm==0 and ( target_arch=="ia32" or target_arch=="x64" )', { |
| 'dependencies': [ |
| '<(DEPTH)/third_party/yasm/yasm.gyp:yasm#host', |
| ], |
| }], |
| ], # conditions |
| |
| 'rules': [ |
| { |
| 'rule_name': 'assemble', |
| 'extension': 'asm', |
| 'inputs': [ '<(yasm_path)', ], |
| 'outputs': [ |
| '<(yasm_output_path)/<(RULE_INPUT_ROOT).<(asm_obj_extension)', |
| ], |
| 'action': [ |
| '<(yasm_path)', |
| '<@(yasm_flags)', |
| '-o', '<(yasm_output_path)/<(RULE_INPUT_ROOT).<(asm_obj_extension)', |
| '<(RULE_INPUT_PATH)', |
| ], |
| 'process_outputs_as_sources': 1, |
| 'message': 'Compile assemly <(RULE_INPUT_PATH).', |
| }, |
| ], # rules |
| } |