X-Git-Url: https://deadsoftware.ru/gitweb?p=dsw-obn.git;a=blobdiff_plain;f=src%2Fmain.c;h=994ae806747dc34788ee8c76e9b247e27dd8202b;hp=a97f2d7d71606da039bf0ded4764654dd8b64005;hb=8c59e1e41700802575cefb289600028909c5ffc2;hpb=2985d77f3ee4af98761b28b4ce1e57582d8c8619 diff --git a/src/main.c b/src/main.c index a97f2d7..994ae80 100644 --- a/src/main.c +++ b/src/main.c @@ -7,6 +7,8 @@ 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) @@ -37,22 +39,43 @@ 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 \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; }