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