aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/gen-mach-header
blob: 84049f65f3af21745afd247c64a9fdd2611a79b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Awk script to generate mach-types.h
#
BEGIN	{ nr = 0 }
/^#/	{ next }
/^[ 	]*$/ { next }

NF == 1 {
	  machname[nr] = $1;
	  nr++;
	}

END	{
	  for (i = 0; i < nr; i++)
	    if (ENVIRON["MACHINE_"machname[i]] == "yes")
	      buildmach[i]=1
	    else
	      buildmach[i]=0

	  printf("/*\n");
	  printf(" * This was automagically generated from %s!\n", FILENAME);
	  printf(" * Do NOT edit\n");
	  printf(" */\n\n");
	  printf("#ifndef __MACH_TYPE_H\n");
	  printf("#define __MACH_TYPE_H\n\n");



	  for (i = 0; i < nr; i++)
	    printf("#define MACHINE_%-30s %d\n", machname[i], i+1);

	  printf("\nextern int machine_number;\n\n");

	  printf("void inline set_machine_number(char *machstring)\n{\n");
	  for (i = 0; i < nr; i++)
	    if (buildmach[i] == 1) {
	      printf("\tif (strcmp(machstring, \"%s\") == 0) {\n\t\tmachine_number = MACHINE_%s;\n\t\treturn;\n\t}\n", machname[i], machname[i]);
	    }
	  printf("}\n\n");

	  for (i = 0; i < nr; i++) {
	    if (buildmach[i] == 1) 
	      printf("#define machine_is_%s()\t(machine_number == MACHINE_%s)\n", machname[i], machname[i]);
	    else
	      printf("#define machine_is_%s()\t(0)\n", machname[i]);
	  }

	  printf("\n#endif\n");
	}