return MESA_SHADER_NONE;
}
+static void
+print_usage(char *exec_name, FILE *f)
+{
+ fprintf(f,
+"Usage: %s [options] file\n"
+"Options:\n"
+" -h --help Print this help.\n"
+" -s, --stage <stage> Specify the shader stage. Valid stages are:\n"
+" vertex, tess-ctrl, tess-eval, geometry, fragment,\n"
+" compute, and kernel (OpenCL-style compute).\n"
+" -e, --entry <name> Specify the entry-point name.\n"
+ , exec_name);
+}
+
int main(int argc, char **argv)
{
gl_shader_stage shader_stage = MESA_SHADER_FRAGMENT;
static struct option long_options[] =
{
+ {"help", no_argument, 0, 'h'},
{"stage", required_argument, 0, 's'},
{"entry", required_argument, 0, 'e'},
{0, 0, 0, 0}
};
- while ((ch = getopt_long(argc - 1, argv + 1, "s:e:", long_options, NULL)) != -1)
+ while ((ch = getopt_long(argc, argv, "hs:e:", long_options, NULL)) != -1)
{
switch (ch)
{
- case 's':
- shader_stage = stage_to_enum(optarg);
- if (shader_stage == MESA_SHADER_NONE)
- {
- fprintf(stderr, "Unknown stage %s\n", optarg);
- return 1;
- }
- break;
- case 'e':
- entry_point = optarg;
- break;
- default:
- fprintf(stderr, "Unrecognized option.\n");
+ case 'h':
+ print_usage(argv[0], stdout);
+ return 0;
+ case 's':
+ shader_stage = stage_to_enum(optarg);
+ if (shader_stage == MESA_SHADER_NONE)
+ {
+ fprintf(stderr, "Unknown stage \"%s\"\n", optarg);
+ print_usage(argv[0], stderr);
return 1;
+ }
+ break;
+ case 'e':
+ entry_point = optarg;
+ break;
+ default:
+ fprintf(stderr, "Unrecognized option \"%s\".\n", optarg);
+ print_usage(argv[0], stderr);
+ return 1;
}
}
- int fd = open(argv[1], O_RDONLY);
+ const char *filename = argv[optind];
+ int fd = open(filename, O_RDONLY);
if (fd < 0)
{
- fprintf(stderr, "Failed to open %s\n", argv[1]);
+ fprintf(stderr, "Failed to open %s\n", filename);
return 1;
}