diff --git a/CMakeLists.txt b/CMakeLists.txt index e60054813..ffb2c7892 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,7 +80,7 @@ if(CORRADE_TARGET_NACL OR CORRADE_TARGET_EMSCRIPTEN) # Newlib toolchain supports only static linking if(CORRADE_TARGET_NACL_NEWLIB) - set(BUILD_STATIC OFF) + set(BUILD_STATIC ON) endif() endif() diff --git a/src/Shader.cpp b/src/Shader.cpp index 5da6f486c..095cd0b0c 100644 --- a/src/Shader.cpp +++ b/src/Shader.cpp @@ -27,6 +27,10 @@ #include #include +#ifdef CORRADE_TARGET_NACL_NEWLIB +#include +#endif + /* libgles-omap3-dev_4.03.00.02-r15.6 on BeagleBoard/Ångström linux 2011.3 doesn't have GLchar */ #ifdef MAGNUM_TARGET_GLES typedef char GLchar; @@ -101,14 +105,21 @@ Shader& Shader::operator=(Shader&& other) { Shader& Shader::addSource(std::string source) { if(!source.empty()) { + #ifdef CORRADE_TARGET_NACL_NEWLIB + std::ostringstream converter; + converter << (sources.size()+1)/2; + #endif + /* Fix line numbers, so line 41 of third added file is marked as 3(41). Source 0 is the #version string added in constructor. */ sources.push_back("#line 1 " + /* This shouldn't be ambiguous. But is. */ #ifndef CORRADE_GCC44_COMPATIBILITY std::to_string((sources.size()+1)/2) + - #else + #elif !defined(CORRADE_TARGET_NACL_NEWLIB) std::to_string(static_cast(sources.size()+1)/2) + + #else + converter.str() + #endif '\n'); sources.push_back(std::move(source));