# 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.
# $(iter-labels) and $(iter-sizes) are also advanced.

o := $(firstword $(iter-items))
iter-items := $(filter-out $o,$(iter-items))

$o-label := $(firstword $(iter-labels))
iter-labels := $(wordlist 2,$(words $(iter-labels)),$(iter-labels))

$o-size := $(firstword $(iter-sizes))
iter-sizes := $(wordlist 2,$(words $(iter-sizes)),$(iter-sizes))

$o$(objext): %$(objext): $(gcc_srcdir)/libgcc2.c
	$(gcc_compile) -DL$($*-label) -c $(gcc_srcdir)/libgcc2.c $(vis_hide) \
		-DLIBGCC2_UNITS_PER_WORD=$($*-size)

ifeq ($(enable_shared),yes)
$(o)_s$(objext): %_s$(objext): $(gcc_srcdir)/libgcc2.c
	$(gcc_s_compile) -DL$($*-label) -c $(gcc_srcdir)/libgcc2.c \
		-DLIBGCC2_UNITS_PER_WORD=$($*-size)
endif
