Another round of gcc/g++ fixes.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@20819 e7fa87d3-cd2b-0410-9028-fcbf551c1848
diff --git a/OGLCompilersDLL/Makefile b/OGLCompilersDLL/Makefile
index f45495b..f788547 100644
--- a/OGLCompilersDLL/Makefile
+++ b/OGLCompilersDLL/Makefile
@@ -1,12 +1,11 @@
INCLUDE = -I. -I../glslang -I../glslang/Include -I../glslang/OSDependent/Linux -I../glslang/MachineIndependent
WARNINGS = -Wall -Wwrite-strings -Wpointer-arith -Wcast-align -Wstrict-prototypes \
-Wnested-externs
-DEFINE = -Dlinux -D__i386__
-
+
CPP = g++
-CPPOPTIONS = -O3 -Wno-deprecated -D_ALT_NS=1
-CPPOPTIONS = -g -Wno-deprecated -D_ALT_NS=1
-CPPFLAGS = $(CPPOPTIONS) $(DEFINE) $(INCLUDE)
+CPPOPTIONS = -O3 -Wno-deprecated -D_ALT_NS=1 -fPIC
+CPPOPTIONS = -g -Wno-deprecated -D_ALT_NS=1 -fPIC
+CPPFLAGS = $(CPPOPTIONS) $(INCLUDE)
#
# Linking related
diff --git a/StandAlone/Makefile b/StandAlone/Makefile
index 80023b1..4337237 100644
--- a/StandAlone/Makefile
+++ b/StandAlone/Makefile
@@ -17,7 +17,7 @@
cd $(OBJECTPATH); make all
%.o : %.cpp
- $(CC) -c $<
+ $(CC) -g -c $<
#
# Cleanup
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index 4544664..576c6d7 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -36,6 +36,7 @@
#include "./../glslang/Include/ShHandle.h"
#include "./../glslang/Public/ShaderLang.h"
#include <string.h>
+#include <stdlib.h>
#include <math.h>
#ifdef _WIN32
@@ -283,17 +284,46 @@
}
+#ifndef _WIN32
+
+#include <errno.h>
+
+int fopen_s(
+ FILE** pFile,
+ const char *filename,
+ const char *mode
+)
+{
+ if (!pFile || !filename || !mode) {
+ return EINVAL;
+ }
+
+ FILE* f = fopen(filename, mode);
+ if (! f) {
+ if (errno != 0) {
+ return errno;
+ } else {
+ return ENOENT;
+ }
+ }
+ *pFile = f;
+
+ return 0;
+}
+
+#endif
+
//
// Malloc a string of sufficient size and read a string into it.
//
-# define MAX_SOURCE_STRINGS 5
char** ReadFileData(const char *fileName)
{
FILE *in;
int errorCode = fopen_s(&in, fileName, "r");
char *fdata;
int count = 0;
- char**return_data=(char**)malloc(MAX_SOURCE_STRINGS+1);
+ const int maxSourceStrings = 5;
+ char** return_data = (char**)malloc(maxSourceStrings+1);
//return_data[MAX_SOURCE_STRINGS]=NULL;
if (errorCode) {
diff --git a/glslang/GenericCodeGen/Makefile b/glslang/GenericCodeGen/Makefile
index 2a2f62a..44b0fd2 100644
--- a/glslang/GenericCodeGen/Makefile
+++ b/glslang/GenericCodeGen/Makefile
@@ -5,6 +5,8 @@
SRCS=CodeGen.cpp Link.cpp
+CPPFLAGS = -fPIC
+
default : all
all : libCodeGen.a
@@ -13,7 +15,7 @@
ranlib $@
%.o : %.cpp
- $(CC) -c $<
+ $(CC) -c $(CPPFLAGS) $<
#
# Cleanup
diff --git a/glslang/Include/ConstantUnion.h b/glslang/Include/ConstantUnion.h
index a4fd466..cd6a88c 100644
--- a/glslang/Include/ConstantUnion.h
+++ b/glslang/Include/ConstantUnion.h
@@ -108,6 +108,11 @@
return true;
break;
+ case EbtUint:
+ if (constant.uConst == uConst)
+ return true;
+
+ break;
case EbtFloat:
if (constant.fConst == fConst)
return true;
@@ -123,6 +128,8 @@
return true;
break;
+ default:
+ assert(false && "Default missing");
}
return false;
diff --git a/glslang/Include/PoolAlloc.h b/glslang/Include/PoolAlloc.h
index 3cacba3..b62bd23 100644
--- a/glslang/Include/PoolAlloc.h
+++ b/glslang/Include/PoolAlloc.h
@@ -62,6 +62,7 @@
//
#include <stddef.h>
+#include <string.h>
#include <vector>
// If we are using guard blocks, we must track each indivual
diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h
index 22c88cb..644e6b8 100644
--- a/glslang/Include/Types.h
+++ b/glslang/Include/Types.h
@@ -110,6 +110,7 @@
case EbtFloat: break;
case EbtInt: s.append("i"); break;
case EbtUint: s.append("u"); break;
+ default: break; // some compilers want this
}
if (image)
s.append("image");
@@ -122,6 +123,7 @@
case EsdCube: s.append("Cube"); break;
case EsdRect: s.append("2DRect"); break;
case EsdBuffer: s.append("Buffer"); break;
+ default: break; // some compilers want this
}
if (ms)
s.append("MS");
@@ -453,7 +455,7 @@
}
}
- TString TType::getCompleteString() const
+ TString getCompleteString() const
{
const int maxSize = 200;
char buf[maxSize];
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index 0cc4e4f..dad01c9 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -1318,6 +1318,9 @@
case EShLangTessEvaluation:
case EShLangGeometry:
// TODO: support these stages
+
+ default:
+ assert(false && "Language not supported");
break;
}
diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp
index 7b50ee1..09bb958 100644
--- a/glslang/MachineIndependent/Intermediate.cpp
+++ b/glslang/MachineIndependent/Intermediate.cpp
@@ -93,6 +93,7 @@
case EOpMul:
if (left->getType().getBasicType() == EbtStruct || left->getType().getBasicType() == EbtBool || left->getType().isArray())
return 0;
+ default: break; // some compilers want this
}
//
@@ -218,6 +219,7 @@
case EOpNegative:
if (child->getType().getBasicType() == EbtStruct || child->getType().isArray())
return 0;
+ default: break; // some compilers want this
}
//
@@ -229,6 +231,7 @@
case EOpConstructBool: newType = EbtBool; break;
case EOpConstructFloat: newType = EbtFloat; break;
case EOpConstructDouble: newType = EbtDouble; break;
+ default: break; // some compilers want this
}
if (newType != EbtVoid) {
@@ -249,6 +252,7 @@
case EOpConstructFloat:
case EOpConstructDouble:
return child;
+ default: break; // some compilers want this
}
TIntermConstantUnion *childTempConstant = 0;
diff --git a/glslang/MachineIndependent/Makefile b/glslang/MachineIndependent/Makefile
index 3f1137a..4a84f67 100644
--- a/glslang/MachineIndependent/Makefile
+++ b/glslang/MachineIndependent/Makefile
@@ -11,13 +11,13 @@
OBJECTS= Initialize.o IntermTraverse.o \
Intermediate.o ParseHelper.o PoolAlloc.o QualifierAlive.o \
RemoveTree.o ShaderLang.o intermOut.o parseConst.o SymbolTable.o \
- InfoSink.o
+ InfoSink.o Versions.o Constant.o
SRCS= gen_glslang.cpp gen_glslang_tab.cpp Initialize.cpp IntermTraverse.cpp \
Intermediate.cpp ParseHelper.cpp PoolAlloc.cp QualifierAlive.cpp \
RemoveTree.cpp ShaderLang.cpp SymbolTable.cpp intermOut.cpp \
- parseConst.cpp InfoSink.cpp
-CPPFLAGS=$(DEFINE) $(INCLUDE)
+ parseConst.cpp InfoSink.cpp Versions.cpp Constant.cpp
+CPPFLAGS=$(DEFINE) $(INCLUDE) -fPIC
SHAREDOBJECT=./lib/libglslang.so
default: all
@@ -26,13 +26,13 @@
$(SHAREDOBJECT): gen_glslang.o gen_glslang_tab.o $(OBJECTS) \
$(LIBPREPROCESSOR) $(LIBCODEGEN) $(LIBOSDEPENDENT) $(LIBINITIALISATION)
- $(CC) -fPIC -shared -lc -o $@ $(OBJECTS) $(LIBPREPROCESSOR) $(LIBCODEGEN) $(LIBOSDEPENDENT) $(LIBINITIALISATION) gen_glslang.o gen_glslang_tab.o
+ $(CC) -fPIC -shared -o $@ -rdynamic -Wl,-whole-archive $(OBJECTS) $(LIBPREPROCESSOR) $(LIBCODEGEN) $(LIBOSDEPENDENT) $(LIBINITIALISATION) gen_glslang.o gen_glslang_tab.o -Wl,-no-whole-archive
gen_glslang.o : gen_glslang.cpp glslang_tab.h
- $(CC) -c $(INCLUDE) gen_glslang.cpp -o $@
+ $(CC) -fPIC -c $(INCLUDE) gen_glslang.cpp -o $@
gen_glslang_tab.o : gen_glslang_tab.cpp
- $(CC) -c $(INCLUDE) gen_glslang_tab.cpp -o $@
+ $(CC) -fPIC -c $(INCLUDE) gen_glslang_tab.cpp -o $@
gen_glslang.cpp: glslang.l
@echo Generating gen_glslang.cpp
@@ -159,3 +159,5 @@
parseConst.o: localintermediate.h ../Include/intermediate.h
parseConst.o: ../Public/ShaderLang.h
InfoSink.o: ../Include/InfoSink.h
+Versions.o: ParseHelper.h Versions.h ../Include/ShHandle.h SymbolTable.h localintermediate.h
+Constant.o: localintermediate.h ../Include/intermediate.h ../Public/ShaderLang.h SymbolTable.h Versions.h
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index 001755f..93c23c2 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -264,6 +264,7 @@
case EvqPointCoord:
profileRequires(symbol->getLine(), ENoProfile, 120, 0, "gl_PointCoord");
break;
+ default: break; // some compilers want this
}
}
}
@@ -647,6 +648,7 @@
error(line, "cannot use 'inout' at global scope", "", "");
return true;
+ default: break; // some compilers want this
}
return false;
diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp
index 9a27d0e..93fcc06 100644
--- a/glslang/MachineIndependent/ShaderLang.cpp
+++ b/glslang/MachineIndependent/ShaderLang.cpp
@@ -40,7 +40,7 @@
// This is the platform independent interface between an OGL driver
// and the shading language compiler/linker.
//
-
+#include <string.h>
#include "SymbolTable.h"
#include "ParseHelper.h"
diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp
index 9fe5dc1..1a958eb 100644
--- a/glslang/MachineIndependent/SymbolTable.cpp
+++ b/glslang/MachineIndependent/SymbolTable.cpp
@@ -64,6 +64,7 @@
switch (sampler.type) {
case EbtInt: mangledName += "i"; break;
case EbtUint: mangledName += "u"; break;
+ default: break; // some compilers want this
}
if (sampler.image)
mangledName += "I";
@@ -80,6 +81,7 @@
case EsdCube: mangledName += "C"; break;
case EsdRect: mangledName += "R2"; break;
case EsdBuffer: mangledName += "B"; break;
+ default: break; // some compilers want this
}
break;
case EbtStruct:
diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp
index 3aff363..118a3f1 100644
--- a/glslang/MachineIndependent/Versions.cpp
+++ b/glslang/MachineIndependent/Versions.cpp
@@ -108,6 +108,7 @@
case EBhEnable:
okay = true;
break;
+ default: break; // some compilers want this
}
}
diff --git a/glslang/MachineIndependent/glslang.l b/glslang/MachineIndependent/glslang.l
index 48a7a96..4671352 100644
--- a/glslang/MachineIndependent/glslang.l
+++ b/glslang/MachineIndependent/glslang.l
@@ -920,6 +920,8 @@
msg = TString("extension '") + extName + "' is not supported";
pc.infoSink.info.message(EPrefixWarning, msg.c_str(), yylineno);
break;
+ default:
+ assert(0 && "unexpected behaviorVal");
}
return;
diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y
index 93dff17..477fa0f 100644
--- a/glslang/MachineIndependent/glslang.y
+++ b/glslang/MachineIndependent/glslang.y
@@ -669,6 +669,7 @@
case 2: op = EOpConstructMat2x2; break;
case 3: op = EOpConstructMat2x3; break;
case 4: op = EOpConstructMat2x4; break;
+ default: break; // some compilers want this
}
break;
case 3:
@@ -676,6 +677,7 @@
case 2: op = EOpConstructMat3x2; break;
case 3: op = EOpConstructMat3x3; break;
case 4: op = EOpConstructMat3x4; break;
+ default: break; // some compilers want this
}
break;
case 4:
@@ -683,8 +685,10 @@
case 2: op = EOpConstructMat4x2; break;
case 3: op = EOpConstructMat4x3; break;
case 4: op = EOpConstructMat4x4; break;
+ default: break; // some compilers want this
}
break;
+ default: break; // some compilers want this
}
} else {
switch($1.vectorSize) {
@@ -692,6 +696,7 @@
case 2: op = EOpConstructVec2; break;
case 3: op = EOpConstructVec3; break;
case 4: op = EOpConstructVec4; break;
+ default: break; // some compilers want this
}
}
break;
@@ -703,6 +708,7 @@
case 2: op = EOpConstructDMat2x2; break;
case 3: op = EOpConstructDMat2x3; break;
case 4: op = EOpConstructDMat2x4; break;
+ default: break; // some compilers want this
}
break;
case 3:
@@ -710,6 +716,7 @@
case 2: op = EOpConstructDMat3x2; break;
case 3: op = EOpConstructDMat3x3; break;
case 4: op = EOpConstructDMat3x4; break;
+ default: break; // some compilers want this
}
break;
case 4:
@@ -717,6 +724,7 @@
case 2: op = EOpConstructDMat4x2; break;
case 3: op = EOpConstructDMat4x3; break;
case 4: op = EOpConstructDMat4x4; break;
+ default: break; // some compilers want this
}
break;
}
@@ -726,6 +734,7 @@
case 2: op = EOpConstructDVec2; break;
case 3: op = EOpConstructDVec3; break;
case 4: op = EOpConstructDVec4; break;
+ default: break; // some compilers want this
}
}
break;
@@ -735,6 +744,7 @@
case 2: op = EOpConstructIVec2; break;
case 3: op = EOpConstructIVec3; break;
case 4: op = EOpConstructIVec4; break;
+ default: break; // some compilers want this
}
break;
case EbtBool:
@@ -743,8 +753,10 @@
case 2: op = EOpConstructBVec2; break;
case 3: op = EOpConstructBVec3; break;
case 4: op = EOpConstructBVec4; break;
+ default: break; // some compilers want this
}
break;
+ default: break; // some compilers want this
}
if (op == EOpNull) {
parseContext.error($1.line, "cannot construct this type", TType::getBasicString($1.type), "");
@@ -829,7 +841,7 @@
case EOpNegative: errorOp[0] = '-'; break;
case EOpLogicalNot: errorOp[0] = '!'; break;
case EOpBitwiseNot: errorOp[0] = '~'; break;
- default: break;
+ default: break; // some compilers want this
}
parseContext.unaryOpError($1.line, errorOp, $2->getCompleteString());
parseContext.recover();
diff --git a/glslang/MachineIndependent/preprocessor/Makefile b/glslang/MachineIndependent/preprocessor/Makefile
index 1219cc0..73af8ab 100644
--- a/glslang/MachineIndependent/preprocessor/Makefile
+++ b/glslang/MachineIndependent/preprocessor/Makefile
@@ -1,7 +1,7 @@
INCLUDE = -I../
-CC = g++
+CC = gcc
-CPPFLAGS=$(DEFINE) $(INCLUDE)
+CPPFLAGS=$(DEFINE) $(INCLUDE) -fPIC
OBJECTS = atom.o cpp.o cppstruct.o memory.o scanner.o symbols.o tokens.o
AR=ar
@@ -14,7 +14,7 @@
ranlib $@
%.o : %.c
- $(CC) $(CPPFLAGS) -c $<
+ $(CC) -c $(CPPFLAGS) $<
#
# Cleanup
diff --git a/glslang/MachineIndependent/preprocessor/cpp.c b/glslang/MachineIndependent/preprocessor/cpp.c
index b8fa1cb..577bfbb 100644
--- a/glslang/MachineIndependent/preprocessor/cpp.c
+++ b/glslang/MachineIndependent/preprocessor/cpp.c
@@ -128,6 +128,10 @@
static SourceLoc ifloc; /* outermost #if */
+int ChkCorrectElseNesting(void);
+int PredefineMacro(char *);
+void FreeMacro(MacroSymbol *);
+
int InitCPP(void)
{
char buffer[64], *t;
diff --git a/glslang/MachineIndependent/preprocessor/cpp.h b/glslang/MachineIndependent/preprocessor/cpp.h
index 2995892..91d31dc 100644
--- a/glslang/MachineIndependent/preprocessor/cpp.h
+++ b/glslang/MachineIndependent/preprocessor/cpp.h
@@ -85,12 +85,6 @@
#include "tokens.h"
#include "Versions.h"
-int InitCPP(void);
-int FinalCPP(void);
-int readCPPline(yystypepp * yylvalpp);
-int MacroExpand(int atom, yystypepp * yylvalpp);
-int ChkCorrectElseNesting(void);
-
typedef struct MacroSymbol {
int argc;
int *args;
@@ -99,8 +93,14 @@
unsigned undef:1;
} MacroSymbol;
-void FreeMacro(MacroSymbol *);
-int PredefineMacro(char *);
+int InitCPP(void);
+int FinalCPP(void);
+int readCPPline(yystypepp * yylvalpp);
+int MacroExpand(int atom, yystypepp * yylvalpp);
+
+#ifdef __cplusplus
+extern "C" {
+#endif
void CPPDebugLogMsg(const char *msg); // Prints information into debug log
void CPPShInfoLogMsg(const char*); // Store cpp Err Msg into Sh.Info.Log
@@ -118,4 +118,9 @@
void updateExtensionBehavior(const char* extName, const char* behavior);
int FreeCPP(void);
+#ifdef __cplusplus
+}
+#endif
+
+
#endif // !(defined(__CPP_H)
diff --git a/glslang/MachineIndependent/preprocessor/memory.c b/glslang/MachineIndependent/preprocessor/memory.c
index 36022bd..7024671 100644
--- a/glslang/MachineIndependent/preprocessor/memory.c
+++ b/glslang/MachineIndependent/preprocessor/memory.c
@@ -79,7 +79,7 @@
#include <stdlib.h>
#include <string.h>
-#ifdef __STDC99__
+#ifdef _WIN32
#include <stdint.h>
#elif defined (_WIN64)
typedef unsigned __int64 uintptr_t;
diff --git a/glslang/MachineIndependent/preprocessor/scanner.c b/glslang/MachineIndependent/preprocessor/scanner.c
index 1f6f925..13459f1 100644
--- a/glslang/MachineIndependent/preprocessor/scanner.c
+++ b/glslang/MachineIndependent/preprocessor/scanner.c
@@ -208,7 +208,7 @@
int ScanFromString(char *s)
{
- StringInputSrc *in = malloc(sizeof(StringInputSrc));
+ StringInputSrc *in = (StringInputSrc *)malloc(sizeof(StringInputSrc));
memset(in, 0, sizeof(StringInputSrc));
in->p = s;
in->base.line = 1;
diff --git a/glslang/MachineIndependent/preprocessor/scanner.h b/glslang/MachineIndependent/preprocessor/scanner.h
index c45c4d7..1bcb024 100644
--- a/glslang/MachineIndependent/preprocessor/scanner.h
+++ b/glslang/MachineIndependent/preprocessor/scanner.h
@@ -87,6 +87,9 @@
#include "parser.h"
// Not really atom table stuff but needed first...
+#ifdef __cplusplus
+extern "C" {
+#endif
typedef struct SourceLoc_Rec {
unsigned short file, line;
@@ -114,5 +117,10 @@
void IncLineNumber(void);
void DecLineNumber(void);
int FreeScanner(void); // Free the cpp scanner
+
+#ifdef __cplusplus
+}
+#endif
+
#endif // !(defined(__SCANNER_H)
diff --git a/glslang/MachineIndependent/preprocessor/symbols.c b/glslang/MachineIndependent/preprocessor/symbols.c
index 2929ef1..579779e 100644
--- a/glslang/MachineIndependent/preprocessor/symbols.c
+++ b/glslang/MachineIndependent/preprocessor/symbols.c
@@ -94,7 +94,7 @@
Scope *GlobalScope = NULL;
static void unlinkScope(void *_scope) {
- Scope *scope = _scope;
+ Scope *scope = (Scope*)_scope;
if (scope->next)
scope->next->prev = scope->prev;
@@ -112,7 +112,7 @@
{
Scope *lScope;
- lScope = mem_Alloc(pool, sizeof(Scope));
+ lScope = (Scope*)mem_Alloc(pool, sizeof(Scope));
lScope->pool = pool;
lScope->parent = NULL;
lScope->funScope = NULL;
diff --git a/glslang/MachineIndependent/preprocessor/tokens.c b/glslang/MachineIndependent/preprocessor/tokens.c
index 4a2d393..af18d74 100644
--- a/glslang/MachineIndependent/preprocessor/tokens.c
+++ b/glslang/MachineIndependent/preprocessor/tokens.c
@@ -242,7 +242,7 @@
void RecordToken(TokenStream *pTok, int token, yystypepp * yylvalpp)
{
const char *s;
- unsigned char *str=NULL;
+ char *str = NULL;
if (token > 256)
lAddByte(pTok, (unsigned char)((token & 0x7f) + 0x80));
@@ -259,10 +259,10 @@
break;
case CPP_FLOATCONSTANT:
case CPP_INTCONSTANT:
- str=yylvalpp->symbol_name;
+ str = yylvalpp->symbol_name;
while (*str){
- lAddByte(pTok,(unsigned char) *str);
- *str++;
+ lAddByte(pTok, (unsigned char) *str);
+ str++;
}
lAddByte(pTok, 0);
break;
@@ -398,7 +398,7 @@
int ReadFromTokenStream(TokenStream *ts, int name, int (*final)(CPPStruct *))
{
- TokenInputSrc *in = malloc(sizeof(TokenInputSrc));
+ TokenInputSrc *in = (TokenInputSrc *) malloc(sizeof(TokenInputSrc));
memset(in, 0, sizeof(TokenInputSrc));
in->base.name = name;
in->base.prev = cpp->currentInput;
@@ -426,12 +426,14 @@
return token;
}
+typedef int (*scanFnPtr_t)(struct InputSrc *, yystypepp *);
+
void UngetToken(int token, yystypepp * yylvalpp) {
- UngotToken *t = malloc(sizeof(UngotToken));
+ UngotToken *t = (UngotToken *) malloc(sizeof(UngotToken));
memset(t, 0, sizeof(UngotToken));
t->token = token;
t->lval = *yylvalpp;
- t->base.scan = (void *)reget_token;
+ t->base.scan = (scanFnPtr_t)reget_token;
t->base.prev = cpp->currentInput;
t->base.name = cpp->currentInput->name;
t->base.line = cpp->currentInput->line;
diff --git a/glslang/OSDependent/Linux/Makefile b/glslang/OSDependent/Linux/Makefile
index dc8d074..e09ad49 100644
--- a/glslang/OSDependent/Linux/Makefile
+++ b/glslang/OSDependent/Linux/Makefile
@@ -9,12 +9,11 @@
INCLUDE = -I. -I../.. -I../../Include -I../../../OGLCompilersDLL
WARNINGS = -Wall -Wwrite-strings -Wpointer-arith -Wcast-align -Wstrict-prototypes \
-Wnested-externs
-DEFINE = -Dlinux -D__i386__
CPP = g++
-CPPOPTIONS = -O3 -Wno-deprecated -D_ALT_NS=1
-CPPOPTIONS = -g -Wno-deprecated -D_ALT_NS=1
-CPPFLAGS = $(CPPOPTIONS) $(DEFINE) $(INCLUDE)
+CPPOPTIONS = -O3 -Wno-deprecated -D_ALT_NS=1 -fPIC
+CPPOPTIONS = -g -Wno-deprecated -D_ALT_NS=1 -fPIC
+CPPFLAGS = $(CPPOPTIONS) $(INCLUDE)
#
# Linking related