X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fmain.c;h=994ae806747dc34788ee8c76e9b247e27dd8202b;hb=2e868cbd80ac5144b08154aaf2cf7bf7be455b61;hp=8029be718d08bc4823e6723657a66441b68fe651;hpb=879793eaf1d6378593f78a192f2961670f686530;p=dsw-obn.git diff --git a/src/main.c b/src/main.c index 8029be7..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,23 +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_generate_code(ctx); oberon_destroy_context(ctx); + return 0; }