]> git.tdb.fi Git - libs/gl.git/commitdiff
Add an output file option to the command-line GLSL compiler
authorMikko Rasa <tdb@tdb.fi>
Fri, 9 Apr 2021 13:45:34 +0000 (16:45 +0300)
committerMikko Rasa <tdb@tdb.fi>
Fri, 9 Apr 2021 14:45:42 +0000 (17:45 +0300)
tools/glslcompiler.cpp

index fdc2f1f18cb0593816528e5479acbdf1c71bb73e..7af8c80bcf78cc5852b38a3f9d573cd4a976144d 100644 (file)
@@ -16,6 +16,7 @@ private:
        bool combined;
        Msp::GL::SL::Stage::Type stage;
        bool dump_ast;
+       std::string out_filename;
 
 public:
        GlslCompiler(int, char **);
@@ -47,6 +48,7 @@ GlslCompiler::GlslCompiler(int argc, char **argv):
        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);
 
@@ -122,10 +124,18 @@ int GlslCompiler::main()
                        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;
 }