A patch submitted for MinGW building.

git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27757 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
John Kessenich 2014-08-18 19:42:35 +00:00
parent f51842e028
commit d6c72a44ab
3 changed files with 30 additions and 23 deletions

View File

@ -33,6 +33,7 @@
//POSSIBILITY OF SUCH DAMAGE. //POSSIBILITY OF SUCH DAMAGE.
#include <assert.h> #include <assert.h>
#include <stdio.h>
#include "BilBuilder.h" #include "BilBuilder.h"

View File

@ -53,10 +53,10 @@ extern "C" {
// Command-line options // Command-line options
enum TOptions { enum TOptions {
EOptionNone = 0x000, EOptionNone = 0x000,
EOptionIntermediate = 0x001, EOptionIntermediate = 0x001,
EOptionSuppressInfolog = 0x002, EOptionSuppressInfolog = 0x002,
EOptionMemoryLeakMode = 0x004, EOptionMemoryLeakMode = 0x004,
EOptionRelaxedErrors = 0x008, EOptionRelaxedErrors = 0x008,
EOptionGiveWarnings = 0x010, EOptionGiveWarnings = 0x010,
EOptionsLinkProgram = 0x020, EOptionsLinkProgram = 0x020,
@ -887,13 +887,19 @@ int fopen_s(
char** ReadFileData(const char* fileName) char** ReadFileData(const char* fileName)
{ {
FILE *in; FILE *in;
int errorCode = fopen_s(&in, fileName, "r"); #if defined(_WIN32) && defined(__GNUC__)
in = fopen(fileName, "r");
int errorCode = in ? 0 : 1;
#else
int errorCode = fopen_s(&in, fileName, "r");
#endif
char *fdata; char *fdata;
int count = 0; int count = 0;
const int maxSourceStrings = 5; const int maxSourceStrings = 5;
char** return_data = (char**)malloc(sizeof(char *) * (maxSourceStrings+1)); char** return_data = (char**)malloc(sizeof(char *) * (maxSourceStrings+1));
if (errorCode) { if (errorCode) {
printf("Error: unable to open input file: %s\n", fileName); printf("Error: unable to open input file: %s\n", fileName);
return 0; return 0;
} }
@ -901,13 +907,13 @@ char** ReadFileData(const char* fileName)
while (fgetc(in) != EOF) while (fgetc(in) != EOF)
count++; count++;
fseek(in, 0, SEEK_SET); fseek(in, 0, SEEK_SET);
if (!(fdata = (char*)malloc(count+2))) { if (!(fdata = (char*)malloc(count+2))) {
printf("Error allocating memory\n"); printf("Error allocating memory\n");
return 0; return 0;
} }
if (fread(fdata,1,count, in)!=count) { if (fread(fdata,1,count, in)!=count) {
printf("Error reading input file: %s\n", fileName); printf("Error reading input file: %s\n", fileName);
return 0; return 0;
} }
@ -921,23 +927,23 @@ char** ReadFileData(const char* fileName)
} else } else
NumShaderStrings = 1; NumShaderStrings = 1;
int len = (int)(ceil)((float)count/(float)NumShaderStrings); int len = (int)(ceil)((float)count/(float)NumShaderStrings);
int ptr_len=0,i=0; int ptr_len=0,i=0;
while(count>0){ while(count>0){
return_data[i]=(char*)malloc(len+2); return_data[i]=(char*)malloc(len+2);
memcpy(return_data[i],fdata+ptr_len,len); memcpy(return_data[i],fdata+ptr_len,len);
return_data[i][len]='\0'; return_data[i][len]='\0';
count-=(len); count-=(len);
ptr_len+=(len); ptr_len+=(len);
if(count<len){ if(count<len){
if(count==0){ if(count==0){
NumShaderStrings=(i+1); NumShaderStrings=(i+1);
break; break;
} }
len = count; len = count;
} }
++i; ++i;
} }
return return_data; return return_data;
} }

View File

@ -37,7 +37,7 @@
#ifndef _COMMON_INCLUDED_ #ifndef _COMMON_INCLUDED_
#define _COMMON_INCLUDED_ #define _COMMON_INCLUDED_
#ifdef _WIN32 #if defined _WIN32 && !defined __GNUC__
#include <basetsd.h> #include <basetsd.h>
#define snprintf sprintf_s #define snprintf sprintf_s
#define safe_vsprintf(buf,max,format,args) vsnprintf_s((buf), (max), (max), (format), (args)) #define safe_vsprintf(buf,max,format,args) vsnprintf_s((buf), (max), (max), (format), (args))
@ -166,7 +166,7 @@ inline const TString String(const int i, const int base = 10)
{ {
char text[16]; // 32 bit ints are at most 10 digits in base 10 char text[16]; // 32 bit ints are at most 10 digits in base 10
#ifdef _WIN32 #if defined _WIN32 && !defined __GNUC__
_itoa_s(i, text, base); _itoa_s(i, text, base);
#else #else
// we assume base 10 for all cases // we assume base 10 for all cases