#!/bin/sh

file=makefile

outvar () {
  escapedvar=$(printf '%s' "$1" | sed -e 's/\$/$$/g')
  printf '\t%s\n' "@printf '%s = %s\\n' '${escapedvar}' $1" >> "$file"
}



rm -f "$file"
touch "$file"


# XFOOC = x_foo.c
# LIBXFOOC = lib/x_foo.c
# MOD = $(XFOOC:%.c=%.o)

printf '# WARNING: DO NOT EDIT, this is a generated file.\n' >> "$file"
cat makefile-header >> "$file"

# First, just output a few - this tests the test driver itself and
# a few special cases
outvar '$(XFOOC)'
outvar '$(LIBXFOOC)'
outvar '$(MODXFOOC)'
outvar '$(XFOOC:%.c=%.o)'
outvar '$(XFOOC:x_%.c=y_%.o)'
outvar '$(LIBXFOOC:x_%.c=y_%.o)'
outvar '$(XFOOC:x_foo.c%=qqq%)'
outvar '$(XFOOC:%x_foo.c=%qqq)'
outvar '$(XFOOC:%=before_%_after)'
outvar '$(XFOOC:x%.%=a%b%)'
outvar '$(XFOOC:x%.%=a%b)'
outvar '$(XFOOPERCENTC:x%o%.c=a%b)'
outvar '$(XFOOC:%.c=double_%_%.o)'
outvar '$(XFOOC:%.c=no_percent)'
outvar '$(XFOOC:%=no_percent)'

# Real test loop
printf '\t%s\n' "@printf '\\n'" >> "$file"
printf '\t%s\n' "@printf 'Real test loop\\n'" >> "$file"
printf '\t%s\n' "@printf '\\n'" >> "$file"

for var in XFOOC LIBXFOOC LIBLIBXFOOC MYLIBXFOOC LIBMYXFOOC MODXFOOC
do
  for modifier in '%.c=%.o' 'x_%=y_%' 'lib/x_%.c=xyz/y_%.o' \
                  'lib/lib/x_%.c=xyz/y_%.o' '%.c=my_%'
  do
    outvar "\$(${var}:${modifier})"
  done
done



# Done.  Don't allow writing.
chmod a=r "$file"


