Blink roll 25b6bd3a7a131ffe68d809546ad1a20707915cdc:3a503f41ae42e5b79cfcd2ff10e65afde...
[chromium-blink-merge.git] / third_party / yasm / yasm_compile.gypi
blob75b870520ef5f458190701799ccf9a7d8a0646a5
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
5 # This is an gyp include to use YASM for compiling assembly files.
7 # Files to be compiled with YASM should have an extension of .asm.
9 # There are three variables for this include:
10 # yasm_flags : Pass additional flags into YASM.
11 # yasm_output_path : Output directory for the compiled object files.
12 # yasm_includes : Includes used by .asm code.  Changes to which should force
13 #                 recompilation.
15 # Sample usage:
16 # 'sources': [
17 #   'ultra_optimized_awesome.asm',
18 # ],
19 # 'variables': {
20 #   'yasm_flags': [
21 #     '-I', 'assembly_include',
22 #   ],
23 #   'yasm_output_path': '<(SHARED_INTERMEDIATE_DIR)/project',
24 #   'yasm_includes': ['ultra_optimized_awesome.inc']
25 # },
26 # 'includes': [
27 #   'third_party/yasm/yasm_compile.gypi'
28 # ],
31   'variables': {
32     'yasm_flags': [],
33     'yasm_includes': [],
35     'conditions': [
36       [ 'use_system_yasm==0', {
37         'yasm_path': '<(PRODUCT_DIR)/yasm<(EXECUTABLE_SUFFIX)',
38       }, {
39         'yasm_path': '<!(which yasm)',
40       }],
42       # Define yasm_flags that pass into YASM.
43       [ 'os_posix==1 and OS!="mac" and OS!="ios" and target_arch=="ia32"', {
44         'yasm_flags': [
45           '-felf32',
46           '-m', 'x86',
47         ],
48       }],
49       [ 'os_posix==1 and OS!="mac" and OS!="ios" and target_arch=="x64"', {
50         'yasm_flags': [
51           '-DPIC',
52           '-felf64',
53           '-m', 'amd64',
54         ],
55       }],
56       [ '(OS=="mac" or OS=="ios") and target_arch=="ia32"', {
57         'yasm_flags': [
58           '-fmacho32',
59           '-m', 'x86',
60         ],
61       }],
62       [ '(OS=="mac" or OS=="ios") and target_arch=="x64"', {
63         'yasm_flags': [
64           '-fmacho64',
65           '-m', 'amd64',
66         ],
67       }],
68       [ 'OS=="win" and target_arch=="ia32"', {
69         'yasm_flags': [
70           '-DPREFIX',
71           '-fwin32',
72           '-m', 'x86',
73         ],
74       }],
75       [ 'OS=="win" and target_arch=="x64"', {
76         'yasm_flags': [
77           '-fwin64',
78           '-m', 'amd64',
79         ],
80       }],
82       # Define output extension.
83       ['OS=="win"', {
84         'asm_obj_extension': 'obj',
85       }, {
86         'asm_obj_extension': 'o',
87       }],
88     ],
89   },  # variables
91   'conditions': [
92     # Only depend on YASM on x86 systems, do this so that compiling
93     # .asm files for ARM will fail.
94     ['use_system_yasm==0 and ( target_arch=="ia32" or target_arch=="x64" )', {
95       'dependencies': [
96         '<(DEPTH)/third_party/yasm/yasm.gyp:yasm#host',
97       ],
98     }],
99   ],  # conditions
101   'rules': [
102     {
103       'rule_name': 'assemble',
104       'extension': 'asm',
105       'inputs': [ '<(yasm_path)', '<@(yasm_includes)'],
106       'outputs': [
107         '<(yasm_output_path)/<(RULE_INPUT_ROOT).<(asm_obj_extension)',
108       ],
109       'action': [
110         '<(yasm_path)',
111         '<@(yasm_flags)',
112         '-o', '<(yasm_output_path)/<(RULE_INPUT_ROOT).<(asm_obj_extension)',
113         '<(RULE_INPUT_PATH)',
114       ],
115       'process_outputs_as_sources': 1,
116       'message': 'Compile assembly <(RULE_INPUT_PATH)',
117     },
118   ],  # rules