Beispiel #1
0
void parse_option(std::string const& flag) {
    if ("library" == flag) {
        env->lib(argp->required_arg());
    } else if ("include" == flag) {
        env->include(argp->required_arg()); 
    } else if ("generator" == flag) {
        env->generator(argp->required_arg());
    } else if ("debug" == flag) {
        env->debug(true);
    } else if ("optimize" == flag) {
        env->optimize(true);
    } else if ("verbose" == flag) {
        env->verbose(true);
    } else if ("clean" == flag) {
        clean(env->build_dir());
        clean("bin");
        clean("lib");
        exit(0);
    } else if ("reset" == flag) {
        File::unlink(".jgmake");
        exit(0);
    } else {
        argp->bad_option(flag);
    }
}
Beispiel #2
0
void load_options() {
    // Loads options from the options file.  FIXME: This settings file loader
    // is pretty haggard.  It should be replaced with JSON.
    std::ifstream opts(".jgmake");
    int c = opts.get();
    while (c != '\n' && !opts.fail()) {
        std::string include;
        while (c != ',' && c != '\n' && !opts.fail()) {
            include += c;
            c = opts.get();
        }
        env->include(include);
        c = opts.get(); 
    }
    c = opts.get();
    while (c != '\n' && !opts.fail()) {
        std::string lib;
        while (c != ',' && c != '\n' && !opts.fail()) {
            lib += c;
            c = opts.get();
        }
        env->lib(lib);
        c = opts.get(); 
    }
}
Beispiel #3
0
void save_options() {
    // Saves options to the options file.
    std::ofstream opts(".jgmake");
    for (int i = 0; i < env->includes(); ++i) {
        opts << env->include(i) << ",";
    }
    opts << std::endl;
    for (int i = 0; i < env->libs(); ++i) {
        opts << env->lib(i) << ",";
    }
    opts << std::endl;
}
Beispiel #4
0
void parse_option(std::string const& flag) {
    // Parses an option and all the corresponding arguments to that option.
    if ("verbose" == flag) {
        env->verbose(true);
    } else if ("optimize" == flag) {
        env->optimize(true);
    } else if ("assembly" == flag) {
        env->assemble(false);
        env->link(false);
    } else if ("compile" == flag) {
        env->link(false);
    } else if ("make" == flag) {
        env->make(true);
    } else if ("debug" == flag) {
        env->debug(true);
    } else if ("dump-ir" == flag) {
        env->dump_ir(true);
    } else if ("dump-ast" == flag) {
        env->dump_ast(true);
    } else if ("dump-lex" == flag) {
        env->dump_lex(true);
    } else if ("dump-liveness" == flag) {
        env->dump_liveness(true);
    } else if ("dump-regalloc" == flag) {
        env->dump_regalloc(true);
    } else if ("dump-reggraph" == flag) {
        env->dump_reggraph(true);
    } else if ("execute" == flag) {
        env->execute(true);
    } else if ("no-default-libs" == flag) {
        env->no_default_libs(true);
        // Debugger flag that prevents default modules from getting
        // loaded automatically by the parser.
    } else if ("include" == flag) {
        env->include(argp->required_arg()); 
    } else if ("output" == flag) {
        env->output(argp->required_arg());
    } else if ("build-dir" == flag) {
        env->build_dir(argp->required_arg());
    } else if ("library" == flag) {
        env->lib(argp->required_arg());
    } else if ("generator" == flag) {
        env->generator(argp->required_arg());
    } else {
        argp->bad_option(flag);
    }
}