diff options
author | Francesco Romani <fromani@gmail.com> | 2014-07-05 18:20:52 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2023-04-12 21:40:20 +0300 |
commit | b1d2bec7ccb21dca6cb13954da39c42b060dfb61 (patch) | |
tree | 7479b76e6f699a56882956343ada80c7896f5ed2 | |
parent | 76d12f5fff86aada4529ce0561ae834d815672b1 (diff) | |
download | orc-b1d2bec7ccb21dca6cb13954da39c42b060dfb61.tar.gz |
orcc: add a parse-only mode
useful while writing orc programs to have faster feedback.
Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/30>
-rw-r--r-- | tools/orcc.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/tools/orcc.c b/tools/orcc.c index 8f1ca55..f1d4e65 100644 --- a/tools/orcc.c +++ b/tools/orcc.c @@ -53,7 +53,8 @@ typedef enum { MODE_IMPL, MODE_HEADER, MODE_TEST, - MODE_ASSEMBLY + MODE_ASSEMBLY, + MODE_PARSE } OrcMode; OrcMode mode = MODE_IMPL; @@ -124,6 +125,8 @@ main (int argc, char *argv[]) mode = MODE_TEST; } else if (strcmp(argv[i], "--assembly") == 0) { mode = MODE_ASSEMBLY; + } else if (strcmp(argv[i], "--parse-only") == 0) { + mode = MODE_PARSE; } else if (strcmp(argv[i], "--include") == 0) { if (i+1 < argc) { include_file = argv[i+1]; @@ -248,6 +251,9 @@ main (int argc, char *argv[]) case MODE_ASSEMBLY: output_file = "out.s"; break; + case MODE_PARSE: + output_file = NULL; + break; } } @@ -269,10 +275,21 @@ main (int argc, char *argv[]) } if (programs == NULL) { - printf("no programs\n"); + if (verbose) { + fprintf(stderr, "no programs found\n"); + } exit(1); } + if (verbose) { + fprintf(stderr, "%i program%s parsed\n", + n_programs, (n_programs > 1) ?"s" :""); + } + + if (mode == MODE_PARSE) { + exit (0); + } + if (init_function == NULL) { init_function = orc_parse_get_init_function (programs[0]); } |