|  | # This file is included several times in a row, once for each element of | 
|  | # $(iter-items).  On each inclusion, we advance $o to the next element. | 
|  |  | 
|  | o := $(firstword $(iter-items)) | 
|  | iter-items := $(filter-out $o,$(iter-items)) | 
|  |  | 
|  | base := $(basename $(notdir $o)) | 
|  |  | 
|  | # Copy c_flags to a rule-specific copy and use the copy, to avoid the | 
|  | # following rules being affected by later changes to c_flags in the | 
|  | # including file. | 
|  | c_flags-$o := $(c_flags) | 
|  |  | 
|  | ifeq ($(suffix $o),.c) | 
|  |  | 
|  | $(base)$(objext): $o | 
|  | $(gcc_compile) $(c_flags-$<) -c $< $(vis_hide) | 
|  |  | 
|  | else | 
|  |  | 
|  | ifneq ($(suffix $o),.S) | 
|  | ifneq ($(suffix $o),.asm) | 
|  | $(error Unsupported file type: $o) | 
|  | endif | 
|  | endif | 
|  |  | 
|  | as_flags-$o := -xassembler$(if $(filter .S,$(suffix $o)),-with-cpp) | 
|  |  | 
|  | $(base)$(objext): $o $(base).vis | 
|  | $(gcc_compile) -c $(as_flags-$<) -include $*.vis $< | 
|  |  | 
|  | $(base).vis: $(base)_s$(objext) | 
|  | $(gen-hide-list) | 
|  |  | 
|  | $(base)_s$(objext): $o | 
|  | $(gcc_s_compile) -c $(as_flags-$<) $< | 
|  |  | 
|  | endif |