diff --git a/PKGBUILD-nacl b/PKGBUILD-nacl-glibc similarity index 67% rename from PKGBUILD-nacl rename to PKGBUILD-nacl-glibc index 22f79f985..2d71b326b 100644 --- a/PKGBUILD-nacl +++ b/PKGBUILD-nacl-glibc @@ -1,8 +1,8 @@ # Author: mosra pkgname=nacl-magnum -pkgver=dev +pkgver=dev.glibc pkgrel=1 -pkgdesc="OpenGL graphics engine (NaCl version)" +pkgdesc="OpenGL graphics engine (NaCl glibc version)" arch=('any') url="https://github.com/mosra/magnum" license=('MIT') @@ -12,38 +12,44 @@ options=(!buildflags !strip) build() { # Build 32bit - mkdir -p "$startdir/build-nacl-x86-32" - cd "$startdir/build-nacl-x86-32" + mkdir -p "$startdir/build-nacl-glibc-x86-32" + cd "$startdir/build-nacl-glibc-x86-32" cmake .. \ -DCMAKE_MODULE_PATH="$startdir/toolchains/modules" \ -DCMAKE_TOOLCHAIN_FILE="$startdir/toolchains/generic/NaCl-glibc-x86-32.cmake" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr/nacl \ + -DWITH_TEXT=OFF \ + -DWITH_TEXTURETOOLS=OFF \ + -DWITH_MAGNUMINFO=OFF \ -DWITH_NACLAPPLICATION=ON \ -DLIB_SUFFIX=/32 make # Build 64bit - mkdir -p "$startdir/build-nacl-x86-64" - cd "$startdir/build-nacl-x86-64" + mkdir -p "$startdir/build-nacl-glibc-x86-64" + cd "$startdir/build-nacl-glibc-x86-64" cmake .. \ -DCMAKE_MODULE_PATH="$startdir/toolchains/modules" \ -DCMAKE_TOOLCHAIN_FILE="$startdir/toolchains/generic/NaCl-glibc-x86-64.cmake" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr/nacl \ + -DWITH_TEXT=OFF \ + -DWITH_TEXTURETOOLS=OFF \ + -DWITH_MAGNUMINFO=OFF \ -DWITH_NACLAPPLICATION=ON make } package() { # Install 32bit - cd "$startdir/build-nacl-x86-32" + cd "$startdir/build-nacl-glibc-x86-32" make DESTDIR="$pkgdir/" install # Install 64bit (the headers will be overwritten, but they are (and should # be) the same for both versions - cd "$startdir/build-nacl-x86-64" + cd "$startdir/build-nacl-glibc-x86-64" make DESTDIR="$pkgdir/" install } diff --git a/PKGBUILD-nacl-newlib b/PKGBUILD-nacl-newlib new file mode 100644 index 000000000..0c5081041 --- /dev/null +++ b/PKGBUILD-nacl-newlib @@ -0,0 +1,57 @@ +# Author: mosra +pkgname=nacl-magnum +pkgver=dev.newlib +pkgrel=1 +pkgdesc="OpenGL graphics engine (NaCl newlib version)" +arch=('any') +url="https://github.com/mosra/magnum" +license=('MIT') +depends=('nacl-corrade') +makedepends=('nacl-sdk' 'cmake') +options=(!buildflags !strip) + +build() { + # Build 32bit + mkdir -p "$startdir/build-nacl-newlib-x86-32" + cd "$startdir/build-nacl-newlib-x86-32" + + cmake .. \ + -DCMAKE_MODULE_PATH="$startdir/toolchains/modules" \ + -DCMAKE_TOOLCHAIN_FILE="$startdir/toolchains/generic/NaCl-newlib-x86-32.cmake" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr/nacl \ + -DWITH_TEXT=OFF \ + -DWITH_TEXTURETOOLS=OFF \ + -DWITH_MAGNUMINFO=OFF \ + -DWITH_NACLAPPLICATION=ON \ + -DBUILD_STATIC=ON \ + -DLIB_SUFFIX=/32 + make + + # Build 64bit + mkdir -p "$startdir/build-nacl-newlib-x86-64" + cd "$startdir/build-nacl-newlib-x86-64" + + cmake .. \ + -DCMAKE_MODULE_PATH="$startdir/toolchains/modules" \ + -DCMAKE_TOOLCHAIN_FILE="$startdir/toolchains/generic/NaCl-newlib-x86-64.cmake" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr/nacl \ + -DWITH_TEXT=OFF \ + -DWITH_TEXTURETOOLS=OFF \ + -DWITH_MAGNUMINFO=OFF \ + -DWITH_NACLAPPLICATION=ON \ + -DBUILD_STATIC=ON + make +} + +package() { + # Install 32bit + cd "$startdir/build-nacl-newlib-x86-32" + make DESTDIR="$pkgdir/" install + + # Install 64bit (the headers will be overwritten, but they are (and should + # be) the same for both versions + cd "$startdir/build-nacl-newlib-x86-64" + make DESTDIR="$pkgdir/" install +} diff --git a/modules/FindCorrade.cmake b/modules/FindCorrade.cmake index fc60051d8..8cb797cd6 100644 --- a/modules/FindCorrade.cmake +++ b/modules/FindCorrade.cmake @@ -19,8 +19,14 @@ # hidden visibility by default. # # Features of found Corrade library are exposed in these variables: -# CORRADE_GCC46_COMPATIBILITY - Defined if compiled with compatibility +# CORRADE_GCC46_COMPATIBILITY - Defined if compiled with compatibility # mode for GCC 4.6 +# CORRADE_TARGET_NACL - Defined if compiled for Google Chrome +# Native Client +# CORRADE_TARGET_NACL_NEWLIB - Defined if compiled for Google Chrome +# Native Client with `newlib` toolchain +# CORRADE_TARGET_NACL_GLIBC - Defined if compiled for Google Chrome +# Native Client with `glibc` toolchain # # Corrade provides these macros and functions: # @@ -157,6 +163,18 @@ string(FIND "${_corradeConfigure}" "#define CORRADE_GCC46_COMPATIBILITY" _GCC46_ if(NOT _GCC46_COMPATIBILITY EQUAL -1) set(CORRADE_GCC46_COMPATIBILITY 1) endif() +string(FIND "${_corradeConfigure}" "#define CORRADE_TARGET_NACL" _TARGET_NACL) +if(NOT _TARGET_NACL EQUAL -1) + set(CORRADE_TARGET_NACL 1) +endif() +string(FIND "${_corradeConfigure}" "#define CORRADE_TARGET_NACL_NEWLIB" _TARGET_NACL_NEWLIB) +if(NOT _TARGET_NACL_NEWLIB EQUAL -1) + set(CORRADE_TARGET_NACL_NEWLIB 1) +endif() +string(FIND "${_corradeConfigure}" "#define CORRADE_TARGET_NACL_GLIBC" _TARGET_NACL_GLIBC) +if(NOT _TARGET_NACL_GLIBC EQUAL -1) + set(CORRADE_TARGET_NACL_GLIBC 1) +endif() set(CORRADE_UTILITY_LIBRARIES ${CORRADE_UTILITY_LIBRARY}) set(CORRADE_INTERCONNECT_LIBRARIES ${CORRADE_INTERCONNECT_LIBRARY} ${CORRADE_UTILITY_LIBRARIES}) @@ -164,7 +182,7 @@ set(CORRADE_PLUGINMANAGER_LIBRARIES ${CORRADE_PLUGINMANAGER_LIBRARY} ${CORRADE_U set(CORRADE_TESTSUITE_LIBRARIES ${CORRADE_TESTSUITE_LIBRARY} ${CORRADE_UTILITY_LIBRARIES}) # At least static build needs this -if(UNIX OR ${CMAKE_SYSTEM_NAME} STREQUAL NaCl) +if((UNIX OR CORRADE_TARGET_NACL) AND NOT CORRADE_TARGET_NACL_NEWLIB) set(CORRADE_PLUGINMANAGER_LIBRARIES ${CORRADE_PLUGINMANAGER_LIBRARIES} dl) endif() diff --git a/src/Math/Complex.h b/src/Math/Complex.h index 484d24b26..01027e4c9 100644 --- a/src/Math/Complex.h +++ b/src/Math/Complex.h @@ -343,7 +343,12 @@ template class Complex { * @see isNormalized() */ inline T length() const { + /** @todo Remove when NaCl's newlib has this fixed */ + #ifndef CORRADE_TARGET_NACL_NEWLIB return std::hypot(_real, _imaginary); + #else + return std::sqrt(dot()); + #endif } /**