Mesa (master): glcpp: Add --disable-line-continuations argument to standalone glcpp

Carl Worth cworth at kemper.freedesktop.org
Fri Jan 11 22:31:40 UTC 2013


Module: Mesa
Branch: master
Commit: 63d156900ffeab0740698c6404aabac9f7a98dba
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=63d156900ffeab0740698c6404aabac9f7a98dba

Author: Carl Worth <cworth at cworth.org>
Date:   Wed Dec  5 13:15:48 2012 -0800

glcpp: Add --disable-line-continuations argument to standalone glcpp

This will allow testing of disabled line-continuation on a case-by-case basis,
(with the option communicated to the preprocessor via the GL context).

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/glsl/glcpp/glcpp.c |   46 ++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 44 insertions(+), 2 deletions(-)

diff --git a/src/glsl/glcpp/glcpp.c b/src/glsl/glcpp/glcpp.c
index 79fbdac..6994d7b 100644
--- a/src/glsl/glcpp/glcpp.c
+++ b/src/glsl/glcpp/glcpp.c
@@ -24,6 +24,8 @@
 #include <stdio.h>
 #include <string.h>
 #include <errno.h>
+#include <getopt.h>
+
 #include "glcpp.h"
 #include "main/mtypes.h"
 #include "main/shaderobj.h"
@@ -100,8 +102,31 @@ static void
 init_fake_gl_context (struct gl_context *gl_ctx)
 {
 	gl_ctx->API = API_OPENGL_COMPAT;
+	gl_ctx->Const.DisableGLSLLineContinuations = false;
+}
+
+static void
+usage (void)
+{
+	fprintf (stderr,
+		 "Usage: glcpp [OPTIONS] [--] [<filename>]\n"
+		 "\n"
+		 "Pre-process the given filename (stdin if no filename given).\n"
+		 "The following options are supported:\n"
+		 "    --disable-line-continuations      Do not interpret lines ending with a\n"
+		 "                                      backslash ('\\') as a line continuation.\n");
 }
 
+enum {
+	DISABLE_LINE_CONTINUATIONS_OPT = CHAR_MAX + 1
+};
+
+const static struct option
+long_options[] = {
+	{"disable-line-continuations", no_argument, 0, DISABLE_LINE_CONTINUATIONS_OPT },
+	{0,                            0,           0, 0 }
+};
+
 int
 main (int argc, char *argv[])
 {
@@ -111,11 +136,28 @@ main (int argc, char *argv[])
 	const char *shader;
 	int ret;
 	struct gl_context gl_ctx;
+	int c;
 
 	init_fake_gl_context (&gl_ctx);
 
-	if (argc) {
-		filename = argv[1];
+	while ((c = getopt_long(argc, argv, "", long_options, NULL)) != -1) {
+		switch (c) {
+		case DISABLE_LINE_CONTINUATIONS_OPT:
+			gl_ctx.Const.DisableGLSLLineContinuations = true;
+			break;
+		default:
+			usage ();
+			exit (1);
+		}
+	}
+
+	if (optind + 1 < argc) {
+		printf ("Unexpected argument: %s\n", argv[optind+1]);
+		usage ();
+		exit (1);
+	}
+	if (optind < argc) {
+		filename = argv[optind];
 	}
 
 	shader = load_text_file (ctx, filename);




More information about the mesa-commit mailing list