X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=main.c;h=e45a3dee3aa251d4d09a96d711e82b52f7ad2dc6;hb=f972547895d0931b7d80a5e5f78d16b79230833b;hp=0104f31816e2bd93374ec2aa5325a9d3dfa397c7;hpb=a055fdb88eee871fd525953969970fcd0c4f7fff;p=cparser diff --git a/main.c b/main.c index 0104f31..e45a3de 100644 --- a/main.c +++ b/main.c @@ -72,8 +72,9 @@ #include "driver/firm_opt.h" #include "driver/firm_cmdline.h" #include "adt/error.h" -#include "write_fluffy.h" -#include "write_caml.h" +#include "wrappergen/write_fluffy.h" +#include "wrappergen/write_caml.h" +#include "wrappergen/write_jna.h" #include "revision.h" #include "warning.h" #include "mangle.h" @@ -508,7 +509,8 @@ typedef enum compile_mode_t { LexTest, PrintAst, PrintFluffy, - PrintCaml + PrintCaml, + PrintJna } compile_mode_t; static void usage(const char *argv0) @@ -518,16 +520,16 @@ static void usage(const char *argv0) static void print_cparser_version(void) { printf("cparser (%s) using libFirm (%u.%u", - cparser_REVISION, firm_get_version_major(), - firm_get_version_minor()); + cparser_REVISION, ir_get_version_major(), + ir_get_version_minor()); - const char *revision = firm_get_version_revision(); + const char *revision = ir_get_version_revision(); if (revision[0] != 0) { putchar(' '); fputs(revision, stdout); } - const char *build = firm_get_version_build(); + const char *build = ir_get_version_build(); if (build[0] != 0) { putchar(' '); fputs(build, stdout); @@ -829,6 +831,9 @@ int main(int argc, char **argv) strstart(orig_opt, "align-jumps=") || strstart(orig_opt, "align-functions=")) { fprintf(stderr, "ignoring gcc option '-f%s'\n", orig_opt); + } else if (strstart(orig_opt, "input-charset=")) { + char const* const encoding = strchr(orig_opt, '=') + 1; + select_input_encoding(encoding); } else if (streq(orig_opt, "verbose-asm")) { /* ignore: we always print verbose assembler */ } else { @@ -1038,6 +1043,8 @@ int main(int argc, char **argv) mode = PrintFluffy; } else if (streq(option, "print-caml")) { mode = PrintCaml; + } else if (streq(option, "print-jna")) { + mode = PrintJna; } else if (streq(option, "version")) { print_cparser_version(); exit(EXIT_SUCCESS); @@ -1157,6 +1164,7 @@ int main(int argc, char **argv) case PrintAst: case PrintFluffy: case PrintCaml: + case PrintJna: case LexTest: case PreprocessOnly: case ParseOnly: @@ -1348,6 +1356,9 @@ do_parsing: } else if (mode == PrintCaml) { write_caml_decls(out, unit); continue; + } else if (mode == PrintJna) { + write_jna_decls(out, unit); + continue; } translation_unit_to_firm(unit);