Fix ANGLE on gcc shared non-libxul builds, r=irc, and I know it's a CLOSED TREE

This commit is contained in:
Vladimir Vukicevic 2010-07-15 14:38:22 -07:00
Родитель 286ba76cc0
Коммит 832bc06216
2 изменённых файлов: 116 добавлений и 82 удалений

Просмотреть файл

@ -1,50 +1,74 @@
# 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.
//
@ -52,28 +76,35 @@ diff --git a/gfx/angle/include/GLSLANG/ShaderLang.h b/gfx/angle/include/GLSLANG/
-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,
@ -81,25 +112,26 @@ diff --git a/gfx/angle/include/GLSLANG/ShaderLang.h b/gfx/angle/include/GLSLANG/
);
-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
@ -111,27 +143,32 @@ diff --git a/gfx/angle/include/GLSLANG/ShaderLang.h b/gfx/angle/include/GLSLANG/
-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

Просмотреть файл

@ -6,28 +6,25 @@
#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)
# 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 ANGLE_API NS_EXTERNAL_VIS
# define __fastcall
# define C_DECL
#endif
//
@ -42,11 +39,11 @@
// 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.
//
@ -103,10 +100,10 @@ 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
@ -115,7 +112,7 @@ ANGLE_EXPORT void ShDestruct(ShHandle);
// 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,
@ -129,14 +126,14 @@ ANGLE_EXPORT int ShCompile(
// 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,
@ -144,7 +141,7 @@ ANGLE_EXPORT int ShLink(
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);
@ -153,28 +150,28 @@ ANGLE_EXPORT int ShLinkExt(
// 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,