#!/bin/awk
#
# Awk script to generate include/asm-sh/machtypes.h
# Heavily based on arch/arm/tools/gen-mach-types
#
BEGIN	{ nr = 0 }
/^#/	{ next }
/^[ 	]*$/ { next }

NF == 2 {
	  mach[nr] = $1;
	  config[nr] = "CONFIG_"$2;
	  nr++;
	}

END	{
	  printf("/*\n");
	  printf(" * Automagically generated, don't touch.\n");
	  printf(" */\n");
	  printf("#ifndef __ASM_SH_MACHTYPES_H\n");
	  printf("#define __ASM_SH_MACHTYPES_H\n");
	  printf("\n");
	  printf("/*\n");
	  printf(" * We'll use the following MACH_xxx defs for placeholders for the time\n");
	  printf(" * being .. these will all go away once sh_machtype is assigned per-board.\n");
	  printf(" *\n");
	  printf(" * For now we leave things the way they are for backwards compatibility.\n");
	  printf(" */\n");
	  printf("\n");
	  printf("/* Mach types */\n");

	  for (i = 0; i < nr; i++) {
	      printf("#ifdef %s\n", config[i]);
	      printf("  #define MACH_%s\t\t1\n", mach[i]);
	      printf("#else\n");
	      printf("  #define MACH_%s\t\t0\n", mach[i]);
	      printf("#endif\n");
	    }

	  printf("\n");
	  printf("/* Machtype checks */\n");
	  for (i = 0; i < nr; i++)
	      printf("#define mach_is_%s()\t\t\t(MACH_%s)\n",
	     	 tolower(mach[i]), mach[i]);
	  printf("\n");
	  printf("#endif /* __ASM_SH_MACHTYPES_H */\n");
	}
