glsl: add just-log option for the standalone compiler.
authorAlejandro Piñeiro <apinheiro@igalia.com>
Tue, 19 Apr 2016 18:26:32 +0000 (20:26 +0200)
committerAlejandro Piñeiro <apinheiro@igalia.com>
Thu, 26 May 2016 06:46:05 +0000 (08:46 +0200)
Add an option in order to ask to just print the InfoLog, without any
header or separator. Useful if we want to use the standalone compiler
to track only the warning/error messages.

v2: all printfs goes on its own line (Ian Romanick)
v3: rebasing: move just_log to standalone.h/cpp

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/compiler/glsl/main.cpp
src/compiler/glsl/standalone.cpp
src/compiler/glsl/standalone.h

index f65b1854d32b9353ed71b7d1f78460d87a1c1f92..1e5e0febcd900faea2068f6a78bec477a167f5c4 100644 (file)
@@ -43,6 +43,7 @@ const struct option compiler_opts[] = {
    { "dump-hir", no_argument, &options.dump_hir, 1 },
    { "dump-lir", no_argument, &options.dump_lir, 1 },
    { "link",     no_argument, &options.do_link,  1 },
+   { "just-log", no_argument, &options.just_log, 1 },
    { "version",  required_argument, NULL, 'v' },
    { NULL, 0, NULL, 0 }
 };
index e5b9057cd013235bdd24b5564565ab933aa8ad67..c9f20e4f856ba020493f8b3a2439640b6cca4b60 100644 (file)
@@ -381,8 +381,14 @@ standalone_compile_shader(const struct standalone_options *_options,
 
       compile_shader(ctx, shader);
 
-      if (strlen(shader->InfoLog) > 0)
-         printf("Info log for %s:\n%s\n", files[i], shader->InfoLog);
+      if (strlen(shader->InfoLog) > 0) {
+         if (!options->just_log)
+            printf("Info log for %s:\n", files[i]);
+
+         printf("%s", shader->InfoLog);
+         if (!options->just_log)
+            printf("\n");
+      }
 
       if (!shader->CompileStatus) {
          status = EXIT_FAILURE;
@@ -396,8 +402,14 @@ standalone_compile_shader(const struct standalone_options *_options,
       link_shaders(ctx, whole_program);
       status = (whole_program->LinkStatus) ? EXIT_SUCCESS : EXIT_FAILURE;
 
-      if (strlen(whole_program->InfoLog) > 0)
-         printf("Info log for linking:\n%s\n", whole_program->InfoLog);
+      if (strlen(whole_program->InfoLog) > 0) {
+         printf("\n");
+         if (!options->just_log)
+            printf("Info log for linking:\n");
+         printf("%s", whole_program->InfoLog);
+         if (!options->just_log)
+            printf("\n");
+      }
 
       for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) {
          struct gl_shader *shader = whole_program->_LinkedShaders[i];
index 5b387c52d28b7b261a921f4fcdc5be51291a37ca..648cedb70ab02d4249f18eb40d73b0ebe7594884 100644 (file)
@@ -34,6 +34,7 @@ struct standalone_options {
    int dump_hir;
    int dump_lir;
    int do_link;
+   int just_log;
 };
 
 struct gl_shader_program;