aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-06-24 16:14:35 -0700
committerAlon Zakai <alonzakai@gmail.com>2013-07-03 15:31:02 -0700
commit190b20e6088000640788bc5c8d0a7e6fc95c1c2d (patch)
treec79a4810623ebf2420027871c46fd32aa5d339f5
parentfac77c3ff04c2f228389fd3697239db263f62ab6 (diff)
DISABLE_GL_EMULATION option
-rw-r--r--src/library_gl.js38
-rw-r--r--src/settings.js2
-rwxr-xr-xtests/runner.py4
3 files changed, 25 insertions, 19 deletions
diff --git a/src/library_gl.js b/src/library_gl.js
index 1fa0cc9c..084cdbb6 100644
--- a/src/library_gl.js
+++ b/src/library_gl.js
@@ -4409,25 +4409,29 @@ var LibraryGL = {
autoAddDeps(LibraryGL, '$GL');
-// Emulation requires everything else, potentially
-LibraryGL.$GLEmulation__deps = LibraryGL.$GLEmulation__deps.slice(0); // the __deps object is shared
-var glFuncs = [];
-for (var item in LibraryGL) {
- if (item != '$GLEmulation' && item.substr(-6) != '__deps' && item.substr(-9) != '__postset' && item.substr(-5) != '__sig' && item.substr(0, 2) == 'gl') {
- glFuncs.push(item);
- }
-}
-LibraryGL.$GLEmulation__deps = LibraryGL.$GLEmulation__deps.concat(glFuncs);
-LibraryGL.$GLEmulation__deps.push(function() {
- for (var func in Functions.getIndex.tentative) {
- Functions.getIndex(func);
- Functions.unimplementedFunctions[func] = LibraryGL[func.substr(1) + '__sig'];
+if (DISABLE_GL_EMULATION) {
+ delete LibraryGL.$GLEmulation;
+} else {
+ // Emulation requires everything else, potentially
+ LibraryGL.$GLEmulation__deps = LibraryGL.$GLEmulation__deps.slice(0); // the __deps object is shared
+ var glFuncs = [];
+ for (var item in LibraryGL) {
+ if (item != '$GLEmulation' && item.substr(-6) != '__deps' && item.substr(-9) != '__postset' && item.substr(-5) != '__sig' && item.substr(0, 2) == 'gl') {
+ glFuncs.push(item);
+ }
}
-});
+ LibraryGL.$GLEmulation__deps = LibraryGL.$GLEmulation__deps.concat(glFuncs);
+ LibraryGL.$GLEmulation__deps.push(function() {
+ for (var func in Functions.getIndex.tentative) {
+ Functions.getIndex(func);
+ Functions.unimplementedFunctions[func] = LibraryGL[func.substr(1) + '__sig'];
+ }
+ });
-if (FORCE_GL_EMULATION) {
- LibraryGL.glDrawElements__deps = LibraryGL.glDrawElements__deps.concat('$GLEmulation');
- LibraryGL.glDrawArrays__deps = LibraryGL.glDrawArrays__deps.concat('$GLEmulation');
+ if (FORCE_GL_EMULATION) {
+ LibraryGL.glDrawElements__deps = LibraryGL.glDrawElements__deps.concat('$GLEmulation');
+ LibraryGL.glDrawArrays__deps = LibraryGL.glDrawArrays__deps.concat('$GLEmulation');
+ }
}
mergeInto(LibraryManager.library, LibraryGL);
diff --git a/src/settings.js b/src/settings.js
index 37a118cb..7f9dca3b 100644
--- a/src/settings.js
+++ b/src/settings.js
@@ -186,6 +186,8 @@ var GL_MAX_TEMP_BUFFER_SIZE = 2097152; // How large GL emulation temp buffers ar
var GL_UNSAFE_OPTS = 1; // Enables some potentially-unsafe optimizations in GL emulation code
var FULL_ES2 = 0; // Forces support for all GLES2 features, not just the WebGL-friendly subset.
var FORCE_GL_EMULATION = 0; // Forces inclusion of full GL emulation code.
+var DISABLE_GL_EMULATION = 0; // Disable inclusion of full GL emulation code. Useful when you don't want emulation
+ // but do need INCLUDE_FULL_LIBRARY or MAIN_MODULE.
var DISABLE_EXCEPTION_CATCHING = 0; // Disables generating code to actually catch exceptions. If the code you
// are compiling does not actually rely on catching exceptions (but the
diff --git a/tests/runner.py b/tests/runner.py
index 15de7756..2c06c02f 100755
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -10606,7 +10606,7 @@ f.close()
self.assertContained('hello from lib', run_js(os.path.join(self.get_dir(), 'a.out.js')))
assert not os.path.exists('a.out') and not os.path.exists('a.exe'), 'Must not leave unneeded linker stubs'
- def zzztest_static_link(self):
+ def test_static_link(self):
open(os.path.join(self.get_dir(), 'main.cpp'), 'w').write('''
extern void printey();
int main() {
@@ -10621,7 +10621,7 @@ f.close()
}
''')
Popen([PYTHON, EMCC, os.path.join(self.get_dir(), 'lib.cpp'), '-o', 'lib.js', '-s', 'SIDE_MODULE=1', '-O2']).communicate()
- Popen([PYTHON, EMCC, os.path.join(self.get_dir(), 'main.cpp'), '-o', 'main.js', '-s', 'MAIN_MODULE=1', '-O2']).communicate()
+ Popen([PYTHON, EMCC, os.path.join(self.get_dir(), 'main.cpp'), '-o', 'main.js', '-s', 'MAIN_MODULE=1', '-O2', '-s', 'DISABLE_GL_EMULATION=1']).communicate()
Popen([PYTHON, EMLINK, 'main.js', 'lib.js', 'together.js'])
self.assertContained('hello from lib', run_js('together.js'))