Here is a patch for the error caused when compiling in c89 mode 
using // comments since there are no single line comments in c89
also the patch gets rid of those anoying warning messages
ignoring return value of 'fwrite', declared with attribute warn_unused_result 
save the bellow text into a file inside the glexemel-0.1a folder name it patch.patch 
or what ever you want to name it then apply it like
patch -Np1 -i glexemel_fwrite.patch
diff -Napur old/Makefile.linux new/Makefile.linux
--- old/Makefile.linux	2005-06-11 16:04:10.000000000 -0400
+++ new/Makefile.linux	2009-06-13 10:09:20.477037830 -0400
@@ -2,8 +2,9 @@
 
 # CC is the name of your C compiler
 CC=gcc
-# CFLAGS are the flags that you want to pass to the C compiler
-CFLAGS=-Wall -ansi -pedantic
+# CFLAGS are the flags that you want to pass to the C compiler 
+# the -std=c99 option is so you can use // comments in code c89 has no // comments
+CFLAGS=-Wall -ansi -pedantic -std=c99
 # IDIRS specify the include directories to use
 IDIRS=-I/usr/include/libxml2
 # LIBS specify the libraries (libxml2)
diff -Napur old/xml2g.c new/xml2g.c
--- old/xml2g.c	2005-06-11 15:30:42.000000000 -0400
+++ new/xml2g.c	2009-06-13 10:06:04.238038712 -0400
@@ -143,6 +143,7 @@ void usage(char *execname)
  */
 int xml2g3d(xmlDocPtr doc, FILE *outfile)
 {	
+	int ret;
 	struct FileHeader fh;
 	struct ModelHeader mh;
 	xmlNode *root_element;
@@ -166,13 +167,13 @@ int xml2g3d(xmlDocPtr doc, FILE *outfile
 	/* write out the file header */
 	memset(&fh, 0, sizeof(struct FileHeader));
 	fh.id[0] = 'G'; fh.id[1] = '3'; fh.id[2] = 'D'; fh.version=4;
-	fwrite(&fh, sizeof(struct FileHeader), 1, outfile);
+	ret = fwrite(&fh, sizeof(struct FileHeader), 1, outfile);
 
 	/* write out the model header */
 	memset(&mh, 0, sizeof(struct ModelHeader));
 	mh.meshCount = (uint16)countChildren(root_element, (xmlChar*)"Mesh");
 	mh.type = 0;
-	fwrite(&mh, sizeof(struct ModelHeader), 1, outfile);
+	ret = fwrite(&mh, sizeof(struct ModelHeader), 1, outfile);
 
 	/* process each mesh in the file */
 	curNode = root_element->children;
@@ -230,6 +231,7 @@ unsigned int countChildren(xmlNode *n, x
  */
 int processMesh(xmlNode *n, FILE *outfile)
 {
+	int ret;
 	xmlChar name[]           = "name";
 	xmlChar frameCount[]     = "frameCount";
 	xmlChar vertexCount[]    = "vertexCount";
@@ -280,7 +282,7 @@ int processMesh(xmlNode *n, FILE *outfil
 		mh.textures = 1;
 
 	/* write the MeshHeader */
-	fwrite(&mh, sizeof(struct MeshHeader), 1, outfile);
+	ret = fwrite(&mh, sizeof(struct MeshHeader), 1, outfile);
 
 	/* if we have a texture, then also write its name */
 	foundFlag = FALSE;
@@ -305,7 +307,7 @@ int processMesh(xmlNode *n, FILE *outfil
 		memset(texname, 0, NAMESIZE);
 		strncpy((char*)texname, 
 			(char*)xmlGetProp(texn, (xmlChar*)"name"), NAMESIZE);
-		fwrite(texname, NAMESIZE, 1, outfile);
+		ret = fwrite(texname, NAMESIZE, 1, outfile);
 	}
 
 	/* write out vertices */
@@ -491,6 +493,7 @@ int readColorChild(xmlNode *n, char *chi
  */
 int processVertices(xmlNode *n, FILE *outfile, uint32 vertexCount)
 {
+	int ret;
 	xmlNode *v;
 	uint32 counted_vertices = 0;
 	float32 p[3];
@@ -512,7 +515,7 @@ int processVertices(xmlNode *n, FILE *ou
 				(xmlChar*)"y"));
 			p[2] = (float32)atof((char*)xmlGetProp(v,
 				(xmlChar*)"z"));
-			fwrite(p, 3*sizeof(float32), 1, outfile);
+			ret = fwrite(p, 3*sizeof(float32), 1, outfile);
 		}
 	}
 
@@ -540,6 +543,7 @@ int processVertices(xmlNode *n, FILE *ou
  */
 int processNormals(xmlNode *n, FILE *outfile, uint32 vertexCount)
 {
+	int ret;
 	xmlNode *v;
 	uint32 counted_normals = 0;
 	float32 p[3];
@@ -561,7 +565,7 @@ int processNormals(xmlNode *n, FILE *out
 				(xmlChar*)"y"));
 			p[2] = (float32)atof((char*)xmlGetProp(v,
 				(xmlChar*)"z"));
-			fwrite(p, 3*sizeof(float32), 1, outfile);
+			ret = fwrite(p, 3*sizeof(float32), 1, outfile);
 		}
 	}
 
@@ -589,6 +593,7 @@ int processNormals(xmlNode *n, FILE *out
  */
 int processTexcoords(xmlNode *n, FILE *outfile, uint32 vertexCount)
 {
+	int ret;
 	xmlNode *v;
 	uint32 counted_texco = 0;
 	float32 p[2];
@@ -608,7 +613,7 @@ int processTexcoords(xmlNode *n, FILE *o
 				(xmlChar*)"s"));
 			p[1] = (float32)atof((char*)xmlGetProp(v,
 				(xmlChar*)"t"));
-			fwrite(p, 2*sizeof(float32), 1, outfile);
+			ret = fwrite(p, 2*sizeof(float32), 1, outfile);
 		}
 	}
 
@@ -636,6 +641,7 @@ int processTexcoords(xmlNode *n, FILE *o
  */
 int processIndices(xmlNode *n, FILE *outfile, uint32 indexCount)
 {
+	int ret;
 	xmlNode *v;
 	uint32 counted_indices = 0;
 	uint32 index;
@@ -653,7 +659,7 @@ int processIndices(xmlNode *n, FILE *out
 			++counted_indices;
 			index = (uint32)atoi((char*)xmlGetProp(v,
 				(xmlChar*)"i"));
-			fwrite(&index, 1*sizeof(uint32), 1, outfile);
+			ret = fwrite(&index, 1*sizeof(uint32), 1, outfile);
 		}
 	}