bool combined;
Msp::GL::SL::Stage::Type stage;
bool dump_ast;
+ std::string out_filename;
public:
GlslCompiler(int, char **);
getopt.add_option('s', "stage", stage_str, GetOpt::REQUIRED_ARG).set_help("Output GLSL for STAGE", "STAGE");
getopt.add_option('m', "module", as_module, GetOpt::NO_ARG).set_help("Compile as unspecialized module");
getopt.add_option('t', "target-version", target_version, GetOpt::REQUIRED_ARG).set_help("Specify target GLSL version", "VER");
+ getopt.add_option('o', "out-file", out_filename, GetOpt::REQUIRED_ARG).set_help("Write output to file instead of stdout", "FILE");
getopt.add_argument("source", source_fn, GetOpt::REQUIRED_ARG).set_help("GLSL file to compile");
getopt(argc, argv);
IO::print("%s\n", compiler.get_stage_debug(*i));
}
+ IO::Base *out = &IO::cout;
+ RefPtr<IO::File> out_file;
+ if(!out_filename.empty())
+ {
+ out_file = new IO::File(out_filename, IO::M_WRITE);
+ out = out_file.get();
+ }
+
if(combined)
- IO::print("%s\n", compiler.get_combined_glsl());
+ IO::print(*out, "%s\n", compiler.get_combined_glsl());
else if(stage!=GL::SL::Stage::SHARED)
- IO::print("%s\n", compiler.get_stage_glsl(stage));
+ IO::print(*out, "%s\n", compiler.get_stage_glsl(stage));
return 0;
}