Fix ANGLE on gcc shared non-libxul builds, r=irc, and I know it's a CLOSED TREE
authorVladimir Vukicevic <vladimir@pobox.com>
Thu, 15 Jul 2010 14:38:22 -0700
changeset 47778 87e4561c270b04847dd651578eedb0ecfcd9c6f6
parent 47777 e1d7fd5255fdb9fe6fc6371c06f27b072ab23c15
child 47779 2bfc4dd5487226fa9f5110532636748ff0ca0991
push id1
push userroot
push dateMon, 20 Oct 2014 17:29:22 +0000
reviewersirc, and
milestone2.0b2pre
Fix ANGLE on gcc shared non-libxul builds, r=irc, and I know it's a CLOSED TREE
gfx/angle/angle-shared.patch
gfx/angle/include/GLSLANG/ShaderLang.h
--- a/gfx/angle/angle-shared.patch
+++ b/gfx/angle/angle-shared.patch
@@ -1,142 +1,179 @@
 # HG changeset patch
-# Parent 42029b6d627ee8c0d5face9cafa2bf7fe8950305
 
 diff --git a/gfx/angle/include/GLSLANG/ShaderLang.h b/gfx/angle/include/GLSLANG/ShaderLang.h
 --- a/gfx/angle/include/GLSLANG/ShaderLang.h
 +++ b/gfx/angle/include/GLSLANG/ShaderLang.h
-@@ -9,10 +9,25 @@
+@@ -1,42 +1,54 @@
+ //
+ // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+ //
+ #ifndef _COMPILER_INTERFACE_INCLUDED_
+ #define _COMPILER_INTERFACE_INCLUDED_
+ 
++#include "nscore.h"
++
  #include "ResourceLimits.h"
  
  #ifdef _WIN32
-+
- #define C_DECL __cdecl
-+
-+#ifndef MOZ_ENABLE_LIBXUL
-+#ifdef ANGLE_BUILD
-+#define ANGLE_EXPORT  __declspec(dllexport)
+-#define C_DECL __cdecl
++# ifndef MOZ_ENABLE_LIBXUL
++#  ifdef ANGLE_BUILD
++#   define ANGLE_API NS_EXPORT
++#  else
++#   define ANGLE_API NS_IMPORT
++#  endif
++# else
++#  define ANGLE_API  /*nothing*/
++# endif
++# define C_DECL __cdecl
  #else
-+#define ANGLE_EXPORT  __declspec(dllimport)
-+#endif
-+#else
-+#define ANGLE_EXPORT
-+#endif
-+
-+#else
-+
-+#define ANGLE_EXPORT
- #define __fastcall
- #define C_DECL
-+
+-#define __fastcall
+-#define C_DECL
++# define ANGLE_API NS_EXTERNAL_VIS
++# define __fastcall
++# define C_DECL
  #endif
  
  //
-@@ -27,11 +42,11 @@
+ // This is the platform independent interface between an OGL driver
+ // and the shading language compiler/linker.
+ //
+ 
+ #ifdef __cplusplus
+ 	extern "C" {
+ #endif
+ //
  // Driver must call this first, once, before doing any other
  // compiler/linker operations.
  //
 -int ShInitialize();
-+ANGLE_EXPORT int ShInitialize();
++ANGLE_API int ShInitialize();
  //
  // Driver should call this at shutdown.
  //
 -int __fastcall ShFinalize();
-+ANGLE_EXPORT int ShFinalize();
++ANGLE_API int ShFinalize();
  //
  // Types of languages the compiler can consume.
  //
-@@ -88,10 +103,10 @@ typedef void* ShHandle;
+ typedef enum {
+ 	EShLangVertex,
+ 	EShLangFragment,
+ 	EShLangCount
+ } EShLanguage;
+@@ -83,88 +95,88 @@ typedef struct {
+ // If handle creation fails, 0 will be returned.
+ //
+ typedef void* ShHandle;
+ 
+ //
  // Driver calls these to create and destroy compiler/linker
  // objects.
  //
 -ShHandle ShConstructCompiler(const EShLanguage, int debugOptions);  // one per shader
 -ShHandle ShConstructLinker(const EShExecutable, int debugOptions);  // one per shader pair
 -ShHandle ShConstructUniformMap();                 // one per uniform namespace (currently entire program object)
 -void ShDestruct(ShHandle);
-+ANGLE_EXPORT ShHandle ShConstructCompiler(const EShLanguage, int debugOptions);  // one per shader
-+ANGLE_EXPORT ShHandle ShConstructLinker(const EShExecutable, int debugOptions);  // one per shader pair
-+ANGLE_EXPORT ShHandle ShConstructUniformMap();                 // one per uniform namespace (currently entire program object)
-+ANGLE_EXPORT void ShDestruct(ShHandle);
++ANGLE_API ShHandle ShConstructCompiler(const EShLanguage, int debugOptions);  // one per shader
++ANGLE_API ShHandle ShConstructLinker(const EShExecutable, int debugOptions);  // one per shader pair
++ANGLE_API ShHandle ShConstructUniformMap();                 // one per uniform namespace (currently entire program object)
++ANGLE_API void ShDestruct(ShHandle);
  
  //
  // The return value of ShCompile is boolean, indicating
-@@ -100,7 +115,7 @@ void ShDestruct(ShHandle);
+ // success or failure.
+ //
  // The info-log should be written by ShCompile into 
  // ShHandle, so it can answer future queries.
  //
 -int ShCompile(
-+ANGLE_EXPORT int ShCompile(
++ANGLE_API int ShCompile(
  	const ShHandle,
  	const char* const shaderStrings[],
  	const int numStrings,
-@@ -114,14 +129,14 @@ int ShCompile(
+ 	const EShOptimizationLevel,
+ 	const TBuiltInResource *resources,
+ 	int debugOptions
+ 	);
+ 
+ 
+ //
  // Similar to ShCompile, but accepts an opaque handle to an
  // intermediate language structure.
  //
 -int ShCompileIntermediate(
-+ANGLE_EXPORT int ShCompileIntermediate(
++ANGLE_API int ShCompileIntermediate(
  	ShHandle compiler,
  	ShHandle intermediate,
  	const EShOptimizationLevel,
  	int debuggable           // boolean
  	);
  
 -int ShLink(
-+ANGLE_EXPORT int ShLink(
++ANGLE_API int ShLink(
  	const ShHandle,               // linker object
  	const ShHandle h[],           // compiler objects to link together
  	const int numHandles,
-@@ -129,7 +144,7 @@ int ShLink(
+ 	ShHandle uniformMap,          // updated with new uniforms
  	short int** uniformsAccessed,  // returned with indexes of uniforms accessed
  	int* numUniformsAccessed); 	
  
 -int ShLinkExt(
-+ANGLE_EXPORT int ShLinkExt(
++ANGLE_API int ShLinkExt(
  	const ShHandle,               // linker object
  	const ShHandle h[],           // compiler objects to link together
  	const int numHandles);
-@@ -138,28 +153,28 @@ int ShLinkExt(
+ 
+ //
  // ShSetEncrpytionMethod is a place-holder for specifying
  // how source code is encrypted.
  //
 -void ShSetEncryptionMethod(ShHandle);
-+ANGLE_EXPORT void ShSetEncryptionMethod(ShHandle);
++ANGLE_API void ShSetEncryptionMethod(ShHandle);
  
  //
  // All the following return 0 if the information is not
  // available in the object passed down, or the object is bad.
  //
 -const char* ShGetInfoLog(const ShHandle);
 -const char* ShGetObjectCode(const ShHandle);
 -const void* ShGetExecutable(const ShHandle);
 -int ShSetVirtualAttributeBindings(const ShHandle, const ShBindingTable*);   // to detect user aliasing
 -int ShSetFixedAttributeBindings(const ShHandle, const ShBindingTable*);     // to force any physical mappings
 -int ShGetPhysicalAttributeBindings(const ShHandle, const ShBindingTable**); // for all attributes
-+ANGLE_EXPORT const char* ShGetInfoLog(const ShHandle);
-+ANGLE_EXPORT const char* ShGetObjectCode(const ShHandle);
-+ANGLE_EXPORT const void* ShGetExecutable(const ShHandle);
-+ANGLE_EXPORT int ShSetVirtualAttributeBindings(const ShHandle, const ShBindingTable*);   // to detect user aliasing
-+ANGLE_EXPORT int ShSetFixedAttributeBindings(const ShHandle, const ShBindingTable*);     // to force any physical mappings
-+ANGLE_EXPORT int ShGetPhysicalAttributeBindings(const ShHandle, const ShBindingTable**); // for all attributes
++ANGLE_API const char* ShGetInfoLog(const ShHandle);
++ANGLE_API const char* ShGetObjectCode(const ShHandle);
++ANGLE_API const void* ShGetExecutable(const ShHandle);
++ANGLE_API int ShSetVirtualAttributeBindings(const ShHandle, const ShBindingTable*);   // to detect user aliasing
++ANGLE_API int ShSetFixedAttributeBindings(const ShHandle, const ShBindingTable*);     // to force any physical mappings
++ANGLE_API int ShGetPhysicalAttributeBindings(const ShHandle, const ShBindingTable**); // for all attributes
  //
  // Tell the linker to never assign a vertex attribute to this list of physical attributes
  //
 -int ShExcludeAttributes(const ShHandle, int *attributes, int count);
-+ANGLE_EXPORT int ShExcludeAttributes(const ShHandle, int *attributes, int count);
++ANGLE_API int ShExcludeAttributes(const ShHandle, int *attributes, int count);
  
  //
  // Returns the location ID of the named uniform.
  // Returns -1 if error.
  //
 -int ShGetUniformLocation(const ShHandle uniformMap, const char* name);
-+ANGLE_EXPORT int ShGetUniformLocation(const ShHandle uniformMap, const char* name);
++ANGLE_API int ShGetUniformLocation(const ShHandle uniformMap, const char* name);
  
  enum TDebugOptions {
  	EDebugOpNone               = 0x000,
+ 	EDebugOpIntermediate       = 0x001,
+ 	EDebugOpAssembly           = 0x002,
+ 	EDebugOpObjectCode         = 0x004,
+ 	EDebugOpLinkMaps           = 0x008
+ };
 diff --git a/gfx/angle/src/compiler/ShaderLang.cpp b/gfx/angle/src/compiler/ShaderLang.cpp
 --- a/gfx/angle/src/compiler/ShaderLang.cpp
 +++ b/gfx/angle/src/compiler/ShaderLang.cpp
 @@ -130,7 +130,7 @@ void ShDestruct(ShHandle handle)
  //
  // Cleanup symbol tables
  //
 -int __fastcall ShFinalize()
--- a/gfx/angle/include/GLSLANG/ShaderLang.h
+++ b/gfx/angle/include/GLSLANG/ShaderLang.h
@@ -1,57 +1,54 @@
 //
 // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 //
 #ifndef _COMPILER_INTERFACE_INCLUDED_
 #define _COMPILER_INTERFACE_INCLUDED_
 
+#include "nscore.h"
+
 #include "ResourceLimits.h"
 
 #ifdef _WIN32
-
-#define C_DECL __cdecl
-
-#ifndef MOZ_ENABLE_LIBXUL
-#ifdef ANGLE_BUILD
-#define ANGLE_EXPORT  __declspec(dllexport)
-#else
-#define ANGLE_EXPORT  __declspec(dllimport)
-#endif
+# ifndef MOZ_ENABLE_LIBXUL
+#  ifdef ANGLE_BUILD
+#   define ANGLE_API NS_EXPORT
+#  else
+#   define ANGLE_API NS_IMPORT
+#  endif
+# else
+#  define ANGLE_API  /*nothing*/
+# endif
+# define C_DECL __cdecl
 #else
-#define ANGLE_EXPORT
-#endif
-
-#else
-
-#define ANGLE_EXPORT
-#define __fastcall
-#define C_DECL
-
+# define ANGLE_API NS_EXTERNAL_VIS
+# define __fastcall
+# define C_DECL
 #endif
 
 //
 // This is the platform independent interface between an OGL driver
 // and the shading language compiler/linker.
 //
 
 #ifdef __cplusplus
 	extern "C" {
 #endif
 //
 // Driver must call this first, once, before doing any other
 // compiler/linker operations.
 //
-ANGLE_EXPORT int ShInitialize();
+ANGLE_API int ShInitialize();
 //
 // Driver should call this at shutdown.
 //
-ANGLE_EXPORT int ShFinalize();
+ANGLE_API int ShFinalize();
 //
 // Types of languages the compiler can consume.
 //
 typedef enum {
 	EShLangVertex,
 	EShLangFragment,
 	EShLangCount
 } EShLanguage;
@@ -98,88 +95,88 @@ typedef struct {
 // If handle creation fails, 0 will be returned.
 //
 typedef void* ShHandle;
 
 //
 // Driver calls these to create and destroy compiler/linker
 // objects.
 //
-ANGLE_EXPORT ShHandle ShConstructCompiler(const EShLanguage, int debugOptions);  // one per shader
-ANGLE_EXPORT ShHandle ShConstructLinker(const EShExecutable, int debugOptions);  // one per shader pair
-ANGLE_EXPORT ShHandle ShConstructUniformMap();                 // one per uniform namespace (currently entire program object)
-ANGLE_EXPORT void ShDestruct(ShHandle);
+ANGLE_API ShHandle ShConstructCompiler(const EShLanguage, int debugOptions);  // one per shader
+ANGLE_API ShHandle ShConstructLinker(const EShExecutable, int debugOptions);  // one per shader pair
+ANGLE_API ShHandle ShConstructUniformMap();                 // one per uniform namespace (currently entire program object)
+ANGLE_API void ShDestruct(ShHandle);
 
 //
 // The return value of ShCompile is boolean, indicating
 // success or failure.
 //
 // The info-log should be written by ShCompile into 
 // ShHandle, so it can answer future queries.
 //
-ANGLE_EXPORT int ShCompile(
+ANGLE_API int ShCompile(
 	const ShHandle,
 	const char* const shaderStrings[],
 	const int numStrings,
 	const EShOptimizationLevel,
 	const TBuiltInResource *resources,
 	int debugOptions
 	);
 
 
 //
 // Similar to ShCompile, but accepts an opaque handle to an
 // intermediate language structure.
 //
-ANGLE_EXPORT int ShCompileIntermediate(
+ANGLE_API int ShCompileIntermediate(
 	ShHandle compiler,
 	ShHandle intermediate,
 	const EShOptimizationLevel,
 	int debuggable           // boolean
 	);
 
-ANGLE_EXPORT int ShLink(
+ANGLE_API int ShLink(
 	const ShHandle,               // linker object
 	const ShHandle h[],           // compiler objects to link together
 	const int numHandles,
 	ShHandle uniformMap,          // updated with new uniforms
 	short int** uniformsAccessed,  // returned with indexes of uniforms accessed
 	int* numUniformsAccessed); 	
 
-ANGLE_EXPORT int ShLinkExt(
+ANGLE_API int ShLinkExt(
 	const ShHandle,               // linker object
 	const ShHandle h[],           // compiler objects to link together
 	const int numHandles);
 
 //
 // ShSetEncrpytionMethod is a place-holder for specifying
 // how source code is encrypted.
 //
-ANGLE_EXPORT void ShSetEncryptionMethod(ShHandle);
+ANGLE_API void ShSetEncryptionMethod(ShHandle);
 
 //
 // All the following return 0 if the information is not
 // available in the object passed down, or the object is bad.
 //
-ANGLE_EXPORT const char* ShGetInfoLog(const ShHandle);
-ANGLE_EXPORT const char* ShGetObjectCode(const ShHandle);
-ANGLE_EXPORT const void* ShGetExecutable(const ShHandle);
-ANGLE_EXPORT int ShSetVirtualAttributeBindings(const ShHandle, const ShBindingTable*);   // to detect user aliasing
-ANGLE_EXPORT int ShSetFixedAttributeBindings(const ShHandle, const ShBindingTable*);     // to force any physical mappings
-ANGLE_EXPORT int ShGetPhysicalAttributeBindings(const ShHandle, const ShBindingTable**); // for all attributes
+ANGLE_API const char* ShGetInfoLog(const ShHandle);
+ANGLE_API const char* ShGetObjectCode(const ShHandle);
+ANGLE_API const void* ShGetExecutable(const ShHandle);
+ANGLE_API int ShSetVirtualAttributeBindings(const ShHandle, const ShBindingTable*);   // to detect user aliasing
+ANGLE_API int ShSetFixedAttributeBindings(const ShHandle, const ShBindingTable*);     // to force any physical mappings
+ANGLE_API int ShGetPhysicalAttributeBindings(const ShHandle, const ShBindingTable**); // for all attributes
 //
 // Tell the linker to never assign a vertex attribute to this list of physical attributes
 //
-ANGLE_EXPORT int ShExcludeAttributes(const ShHandle, int *attributes, int count);
+ANGLE_API int ShExcludeAttributes(const ShHandle, int *attributes, int count);
 
 //
 // Returns the location ID of the named uniform.
 // Returns -1 if error.
 //
-ANGLE_EXPORT int ShGetUniformLocation(const ShHandle uniformMap, const char* name);
+ANGLE_API int ShGetUniformLocation(const ShHandle uniformMap, const char* name);
 
 enum TDebugOptions {
 	EDebugOpNone               = 0x000,
 	EDebugOpIntermediate       = 0x001,
 	EDebugOpAssembly           = 0x002,
 	EDebugOpObjectCode         = 0x004,
 	EDebugOpLinkMaps           = 0x008
 };