diff --git a/src/main.c b/src/main.c
index 8029be718d08bc4823e6723657a66441b68fe651..994ae806747dc34788ee8c76e9b247e27dd8202b 100644 (file)
--- a/src/main.c
+++ b/src/main.c
static oberon_context_t * ctx;
static oberon_module_t * mod;
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)
static const char *
import_module(const char * name)
return source;
}
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;
int
main(int argc, char ** argv)
{
const char * code;
- if(argc != 2)
- {
- printf("use: %s <source>\n", argv[0]);
- return 1;
- }
+ init(argc, argv);
- code = import_module(argv[1]);
+ code = import_module(module);
ctx = oberon_create_context(import_module);
ctx = oberon_create_context(import_module);
+ oberon_set_out_directory(ctx, out_path);
+
mod = oberon_compile_module(ctx, code);
mod = oberon_compile_module(ctx, code);
- oberon_generate_code(ctx);
oberon_destroy_context(ctx);
oberon_destroy_context(ctx);
+
return 0;
}
return 0;
}