| OLD | NEW | 
|---|
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be | 
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. | 
| 4 | 4 | 
| 5 # This provides the yasm_assemble() template which uses YASM to assemble | 5 # This provides the yasm_assemble() template which uses YASM to assemble | 
| 6 # assembly files. | 6 # assembly files. | 
| 7 # | 7 # | 
| 8 # Files to be assembled with YASM should have an extension of .asm. | 8 # Files to be assembled with YASM should have an extension of .asm. | 
| 9 # | 9 # | 
| 10 # Parameters | 10 # Parameters | 
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 87   } | 87   } | 
| 88 } | 88 } | 
| 89 | 89 | 
| 90 if (is_win) { | 90 if (is_win) { | 
| 91   asm_obj_extension = "obj" | 91   asm_obj_extension = "obj" | 
| 92 } else { | 92 } else { | 
| 93   asm_obj_extension = "o" | 93   asm_obj_extension = "o" | 
| 94 } | 94 } | 
| 95 | 95 | 
| 96 template("yasm_assemble") { | 96 template("yasm_assemble") { | 
| 97   # TODO(ajwong): Support use_system_yasm. |  | 
| 98   assert(defined(invoker.sources), "Need sources defined for $target_name") | 97   assert(defined(invoker.sources), "Need sources defined for $target_name") | 
| 99 | 98 | 
| 100   # Only depend on YASM on x86 systems. Force compilation of .asm files for | 99   # Only depend on YASM on x86 systems. Force compilation of .asm files for | 
| 101   # ARM to fail. | 100   # ARM to fail. | 
| 102   assert(current_cpu == "x86" || current_cpu == "x64") | 101   assert(current_cpu == "x86" || current_cpu == "x64") | 
| 103 | 102 | 
| 104   action_name = "${target_name}_action" | 103   action_name = "${target_name}_action" | 
| 105   source_set_name = target_name | 104   source_set_name = target_name | 
| 106 | 105 | 
| 107   action_foreach(action_name) { | 106   action_foreach(action_name) { | 
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 159     ] | 158     ] | 
| 160 | 159 | 
| 161     # Extra defines. | 160     # Extra defines. | 
| 162     if (defined(invoker.defines)) { | 161     if (defined(invoker.defines)) { | 
| 163       foreach(def, invoker.defines) { | 162       foreach(def, invoker.defines) { | 
| 164         args += [ "-D$def" ] | 163         args += [ "-D$def" ] | 
| 165       } | 164       } | 
| 166     } | 165     } | 
| 167 | 166 | 
| 168     # Output file. | 167     # Output file. | 
| 169     # |  | 
| 170     # TODO(brettw) it might be nice if there was a source expansion for the |  | 
| 171     # path of the source file relative to the source root. Then we could |  | 
| 172     # exactly duplicate the naming and location of object files from the |  | 
| 173     # native build, which would be: |  | 
| 174     # "$root_out_dir/${target_name}.{{source_dir_part}}.$asm_obj_extension" |  | 
| 175     outputs = [ | 168     outputs = [ | 
| 176       "$target_out_dir/{{source_name_part}}.o", | 169       "$target_out_dir/$source_set_name/{{source_name_part}}.o", | 
| 177     ] | 170     ] | 
| 178     args += [ | 171     args += [ | 
| 179       "-o", | 172       "-o", | 
| 180       rebase_path(outputs[0], root_build_dir), | 173       rebase_path(outputs[0], root_build_dir), | 
| 181       "{{source}}", | 174       "{{source}}", | 
| 182     ] | 175     ] | 
| 183 | 176 | 
| 184     # The wrapper script run_yasm will write the depfile to the same name as | 177     # The wrapper script run_yasm will write the depfile to the same name as | 
| 185     # the output but with .d appended (like gcc will). | 178     # the output but with .d appended (like gcc will). | 
| 186     depfile = outputs[0] + ".d" | 179     depfile = outputs[0] + ".d" | 
| 187   } | 180   } | 
| 188 | 181 | 
| 189   # Gather the .o files into a linkable thing. This doesn't actually link | 182   # Gather the .o files into a linkable thing. This doesn't actually link | 
| 190   # anything (a source set just compiles files to link later), but will pass | 183   # anything (a source set just compiles files to link later), but will pass | 
| 191   # the object files generated by the action up the dependency chain. | 184   # the object files generated by the action up the dependency chain. | 
| 192   source_set(source_set_name) { | 185   source_set(source_set_name) { | 
| 193     if (defined(invoker.visibility)) { | 186     if (defined(invoker.visibility)) { | 
| 194       visibility = invoker.visibility | 187       visibility = invoker.visibility | 
| 195     } | 188     } | 
| 196 | 189 | 
| 197     sources = get_target_outputs(":$action_name") | 190     sources = get_target_outputs(":$action_name") | 
| 198 | 191 | 
| 199     deps = [ | 192     deps = [ | 
| 200       ":$action_name", | 193       ":$action_name", | 
| 201     ] | 194     ] | 
| 202   } | 195   } | 
| 203 } | 196 } | 
| OLD | NEW | 
|---|