DEADSOFTWARE

Теперь можно указывать куда сгружать высер кодогенератора
[dsw-obn.git] / src / main.c
index a97f2d7d71606da039bf0ded4764654dd8b64005..994ae806747dc34788ee8c76e9b247e27dd8202b 100644 (file)
@@ -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 <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;
 }