summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancesco Romani <fromani@gmail.com>2014-07-05 18:20:52 +0200
committerSebastian Dröge <sebastian@centricular.com>2023-04-12 21:40:20 +0300
commitb1d2bec7ccb21dca6cb13954da39c42b060dfb61 (patch)
tree7479b76e6f699a56882956343ada80c7896f5ed2
parent76d12f5fff86aada4529ce0561ae834d815672b1 (diff)
downloadorc-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.c21
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]);
}