b=578938; ANGLE compilation broken for non-libxul shared builds; r=khuey

This commit is contained in:
Vladimir Vukicevic 2010-07-15 12:49:09 -07:00
parent 74d0e7e192
commit 19360f2603
7 changed files with 195 additions and 21 deletions

View File

@ -114,7 +114,11 @@ CSRCS = \
tokens.c \
$(NULL)
DEFINES += -DANGLE_USE_NSPR
DEFINES += -DANGLE_USE_NSPR -DANGLE_BUILD
ifndef MOZ_ENABLE_LIBXUL
EXTRA_DSO_LDOPTS = $(MOZ_COMPONENT_LIBS)
endif
include $(topsrcdir)/config/rules.mk

View File

@ -5,6 +5,8 @@ Current revision: r342
Local patches:
angle-nspr.patch - use NSPR for TLS
angle-shared.patch - add declspec dllexport/dllimport support on win32
To regenerate the flex/yacc generated files:
flex --noline --nounistd --outfile=generated/glslang.cpp src/compiler/glslang.l

View File

@ -0,0 +1,146 @@
# 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 @@
#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
+#else
+#define ANGLE_EXPORT
+#endif
+
+#else
+
+#define ANGLE_EXPORT
#define __fastcall
#define C_DECL
+
#endif
//
@@ -27,11 +42,11 @@
// Driver must call this first, once, before doing any other
// compiler/linker operations.
//
-int ShInitialize();
+ANGLE_EXPORT int ShInitialize();
//
// Driver should call this at shutdown.
//
-int __fastcall ShFinalize();
+ANGLE_EXPORT int ShFinalize();
//
// Types of languages the compiler can consume.
//
@@ -88,10 +103,10 @@ 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);
//
// The return value of ShCompile is boolean, indicating
@@ -100,7 +115,7 @@ void ShDestruct(ShHandle);
// The info-log should be written by ShCompile into
// ShHandle, so it can answer future queries.
//
-int ShCompile(
+ANGLE_EXPORT int ShCompile(
const ShHandle,
const char* const shaderStrings[],
const int numStrings,
@@ -114,14 +129,14 @@ int ShCompile(
// Similar to ShCompile, but accepts an opaque handle to an
// intermediate language structure.
//
-int ShCompileIntermediate(
+ANGLE_EXPORT int ShCompileIntermediate(
ShHandle compiler,
ShHandle intermediate,
const EShOptimizationLevel,
int debuggable // boolean
);
-int ShLink(
+ANGLE_EXPORT int ShLink(
const ShHandle, // linker object
const ShHandle h[], // compiler objects to link together
const int numHandles,
@@ -129,7 +144,7 @@ int ShLink(
short int** uniformsAccessed, // returned with indexes of uniforms accessed
int* numUniformsAccessed);
-int ShLinkExt(
+ANGLE_EXPORT 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);
//
// 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
//
// 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);
//
// 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);
enum TDebugOptions {
EDebugOpNone = 0x000,
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()
+int ShFinalize()
{
if (PerProcessGPA) {
PerProcessGPA->popAll();

View File

@ -9,10 +9,25 @@
#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
#else
#define ANGLE_EXPORT
#endif
#else
#define ANGLE_EXPORT
#define __fastcall
#define C_DECL
#endif
//
@ -27,11 +42,11 @@
// Driver must call this first, once, before doing any other
// compiler/linker operations.
//
int ShInitialize();
ANGLE_EXPORT int ShInitialize();
//
// Driver should call this at shutdown.
//
int __fastcall ShFinalize();
ANGLE_EXPORT int ShFinalize();
//
// Types of languages the compiler can consume.
//
@ -88,10 +103,10 @@ 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);
//
// The return value of ShCompile is boolean, indicating
@ -100,7 +115,7 @@ void ShDestruct(ShHandle);
// The info-log should be written by ShCompile into
// ShHandle, so it can answer future queries.
//
int ShCompile(
ANGLE_EXPORT int ShCompile(
const ShHandle,
const char* const shaderStrings[],
const int numStrings,
@ -114,14 +129,14 @@ int ShCompile(
// Similar to ShCompile, but accepts an opaque handle to an
// intermediate language structure.
//
int ShCompileIntermediate(
ANGLE_EXPORT int ShCompileIntermediate(
ShHandle compiler,
ShHandle intermediate,
const EShOptimizationLevel,
int debuggable // boolean
);
int ShLink(
ANGLE_EXPORT int ShLink(
const ShHandle, // linker object
const ShHandle h[], // compiler objects to link together
const int numHandles,
@ -129,7 +144,7 @@ int ShLink(
short int** uniformsAccessed, // returned with indexes of uniforms accessed
int* numUniformsAccessed);
int ShLinkExt(
ANGLE_EXPORT 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);
//
// 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
//
// 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);
//
// 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);
enum TDebugOptions {
EDebugOpNone = 0x000,

View File

@ -130,7 +130,7 @@ void ShDestruct(ShHandle handle)
//
// Cleanup symbol tables
//
int __fastcall ShFinalize()
int ShFinalize()
{
if (PerProcessGPA) {
PerProcessGPA->popAll();

View File

@ -60,7 +60,13 @@ LIBXUL_LIBRARY = 1
ifndef MOZ_ENABLE_LIBXUL
EXTRA_DSO_LIBS = gkgfx
ifneq ($(OS_ARCH)_$(OS_TEST),Linux_x86_64)
EXTRA_DSO_LIBS += angle
endif
endif
EXTRA_DSO_LIBS += thebes ycbcr

View File

@ -128,6 +128,7 @@ MAKEFILES_gfx="
gfx/tests/Makefile
gfx/thebes/Makefile
gfx/qcms/Makefile
gfx/angle/Makefile
"
MAKEFILES_htmlparser="