diff --git a/src/main.c b/src/main.c
index a97f2d7d71606da039bf0ded4764654dd8b64005..994ae806747dc34788ee8c76e9b247e27dd8202b 100644 (file)
--- a/src/main.c
+++ b/src/main.c
static oberon_context_t * ctx;
static oberon_module_t * mod;
+static const char * module;
+static const char * out_path;
static const char *
import_module(const char * name)
return source;
}
+static void
+init(int argc, char ** argv)
+{
+ int i = 1;
+ out_path = ".";
+
+ if(argc > 2 && strcmp(argv[i], "-d") == 0)
+ {
+ out_path = argv[i + 1];
+ argc -= 2;
+ i += 2;
+ }
+
+ if(argc != 2 || argv[i][0] == '-')
+ {
+ printf("usage: obn [-d out_dir] module\n");
+ exit(1);
+ }
+
+ module = argv[i];
+}
+
int
main(int argc, char ** argv)
{
const char * code;
- if(argc != 2)
- {
- printf("use: %s <module>\n", argv[0]);
- return 1;
- }
+ init(argc, argv);
- code = import_module(argv[1]);
+ code = import_module(module);
ctx = oberon_create_context(import_module);
+ oberon_set_out_directory(ctx, out_path);
+
mod = oberon_compile_module(ctx, code);
oberon_destroy_context(ctx);
+
return 0;
}