From: David Schleef Date: Sat, 19 Sep 2009 18:53:39 +0000 (-0700) Subject: orcc: Add handling of command line options X-Git-Tag: merge-base~79 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9a308fa498f52603b7719fd2434f6842249f4c42;p=platform%2Fupstream%2Forc.git orcc: Add handling of command line options --- diff --git a/tools/orcc.c b/tools/orcc.c index b7006fd..33f8f98 100644 --- a/tools/orcc.c +++ b/tools/orcc.c @@ -1,10 +1,13 @@ +#include "config.h" + #include #include #include #include #include +#include static char * read_file (const char *filename); void output_code (OrcProgram *p, FILE *output); @@ -15,6 +18,34 @@ void output_code_no_orc (OrcProgram *p, FILE *output); static void print_defines (FILE *output); static void print_exec_header (FILE *output); +int verbose = 0; + +enum { + MODE_IMPL, + MODE_HEADER, + MODE_TEST +}; +int mode = MODE_IMPL; + +void help (void) +{ + printf("Usage:\n"); + printf(" orcc [OPTION...] INPUT_FILE\n"); + printf("\n"); + printf("Help Options:\n"); + printf(" -?, --help Show help options\n"); + printf("\n"); + printf("Application Options:\n"); + printf(" -v, --verbose Output more information\n"); + printf(" -o, --output=FILE Write output to FILE\n"); + printf(" --implementation Produce C code implementing functions\n"); + printf(" --header Produce C header for functions\n"); + printf(" --test Produce test code for functions\n"); + printf("\n"); + + exit (0); +} + int main (int argc, char *argv[]) { @@ -22,94 +53,137 @@ main (int argc, char *argv[]) int n; int i; OrcProgram **programs; - const char *filename = "test.orc"; + char *output_file = NULL; + char *input_file = NULL; FILE *output; orc_init (); orc_test_init (); - if (argc >= 2) { - filename = argv[1]; + for(i=1;i\n"); + printf("Could not read input file: %s\n", input_file); exit(1); } n = orc_parse (code, &programs); - output = fopen ("out.c", "w"); - fprintf(output, "\n"); - fprintf(output, "/* autogenerated from %s */\n", filename); - fprintf(output, "\n"); - fprintf(output, "#ifndef DISABLE_ORC\n"); - fprintf(output, "#include \n"); - fprintf(output, "#else\n"); - fprintf(output, "#include \n"); - print_exec_header (output); - fprintf(output, "#endif\n"); - fprintf(output, "\n"); - print_defines (output); - fprintf(output, "\n"); - for(i=0;i\n"); - fprintf(output, "#include \n"); - fprintf(output, "#include \n"); - fprintf(output, "#include \n"); - fprintf(output, "\n"); - print_defines (output); - fprintf(output, "\n"); - for(i=0;iname); - output_code_backup (programs[i], output); - } - fprintf(output, "\n"); - fprintf(output, "int\n"); - fprintf(output, "main (int argc, char *argv[])\n"); - fprintf(output, "{\n"); - fprintf(output, " int error = FALSE;\n"); - fprintf(output, "\n"); - fprintf(output, " orc_test_init ();\n"); - fprintf(output, "\n"); - for(i=0;i\n"); + fprintf(output, "#else\n"); + fprintf(output, "#include \n"); + print_exec_header (output); + fprintf(output, "#endif\n"); + fprintf(output, "\n"); + print_defines (output); + fprintf(output, "\n"); + for(i=0;i\n"); + fprintf(output, "#include \n"); + fprintf(output, "#include \n"); + fprintf(output, "#include \n"); + fprintf(output, "\n"); + print_defines (output); + fprintf(output, "\n"); + for(i=0;iname); + output_code_backup (programs[i], output); + } + fprintf(output, "\n"); + fprintf(output, "int\n"); + fprintf(output, "main (int argc, char *argv[])\n"); + fprintf(output, "{\n"); + fprintf(output, " int error = FALSE;\n"); + fprintf(output, "\n"); + fprintf(output, " orc_test_init ();\n"); + fprintf(output, "\n"); + for(i=0;i