1181624Skmacy#!/usr/bin/python
2181624Skmacy
3181624Skmacyimport sys;
4181624Skmacyfrom structs import structs;
5181624Skmacy
6181624Skmacy# command line arguments
7181624Skmacyarch    = sys.argv[1];
8181624Skmacyoutfile = sys.argv[2];
9181624Skmacyarchs   = sys.argv[3:];
10181624Skmacy
11181624Skmacyf = open(outfile, "w");
12181624Skmacyf.write('''
13181624Skmacy/*
14181624Skmacy * sanity checks for generated foreign headers:
15181624Skmacy *  - verify struct sizes
16181624Skmacy *
17181624Skmacy * generated by %s -- DO NOT EDIT
18181624Skmacy */
19181624Skmacy#include <stdio.h>
20181624Skmacy#include <stdlib.h>
21181624Skmacy#include <stddef.h>
22181624Skmacy#include <inttypes.h>
23181624Skmacy#include "../xen.h"
24181624Skmacy''');
25181624Skmacy
26181624Skmacyfor a in archs:
27181624Skmacy    f.write('#include "%s.h"\n' % a);
28181624Skmacy
29181624Skmacyf.write('int main(int argc, char *argv[])\n{\n');
30181624Skmacy
31181624Skmacyf.write('\tprintf("\\n");');
32183375Skmacyf.write('printf("%-25s |", "structs");\n');
33181624Skmacyfor a in archs:
34181624Skmacy    f.write('\tprintf("%%8s", "%s");\n' % a);
35181624Skmacyf.write('\tprintf("\\n");');
36181624Skmacy
37181624Skmacyf.write('\tprintf("\\n");');
38181624Skmacyfor struct in structs:
39183375Skmacy    f.write('\tprintf("%%-25s |", "%s");\n' % struct);
40181624Skmacy    for a in archs:
41181624Skmacy        if a == arch:
42181624Skmacy            s = struct; # native
43181624Skmacy        else:
44181624Skmacy            s = struct + "_" + a;
45181624Skmacy        f.write('#ifdef %s_has_no_%s\n' % (a, struct));
46181624Skmacy        f.write('\tprintf("%8s", "-");\n');
47181624Skmacy        f.write("#else\n");
48181624Skmacy        f.write('\tprintf("%%8zd", sizeof(struct %s));\n' % s);
49181624Skmacy        f.write("#endif\n");
50181624Skmacy
51181624Skmacy    f.write('\tprintf("\\n");\n\n');
52181624Skmacy
53181624Skmacyf.write('\tprintf("\\n");\n');
54181624Skmacyf.write('\texit(0);\n');
55181624Skmacyf.write('}\n');
56181624Skmacy
57181624Skmacyf.close();
58181624Skmacy
59