Browse Source

Platform: ported magnum-info to NaCl.

The binary installs into `bin/`, the HTML and NMF into `share/`, the
user is currently expected to copy them manually to server.
pull/278/head
Vladimír Vondruš 13 years ago
parent
commit
a08978e7cb
  1. 1
      CMakeLists.txt
  2. 4
      PKGBUILD-nacl-newlib
  3. 19
      src/Platform/CMakeLists.txt
  4. 91
      src/Platform/magnum-info-nacl.html
  5. 6
      src/Platform/magnum-info-nacl.nmf
  6. 14
      src/Platform/magnum-info.cpp

1
CMakeLists.txt

@ -117,6 +117,7 @@ endif()
include(CorradeLibSuffix)
set(MAGNUM_BINARY_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/bin)
set(MAGNUM_LIBRARY_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})
set(MAGNUM_DATA_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/magnum)
set(MAGNUM_CMAKE_MODULE_INSTALL_DIR ${CMAKE_ROOT}/Modules)
set(MAGNUM_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/Magnum)

4
PKGBUILD-nacl-newlib

@ -20,7 +20,7 @@ build() {
-DCMAKE_TOOLCHAIN_FILE="$startdir/toolchains/generic/NaCl-newlib-x86-32.cmake" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/nacl \
-DWITH_MAGNUMINFO=OFF \
-DWITH_MAGNUMINFO=ON \
-DWITH_NACLAPPLICATION=ON \
-DWITH_WINDOWLESSNACLAPPLICATION=ON \
-DBUILD_STATIC=ON \
@ -36,7 +36,7 @@ build() {
-DCMAKE_TOOLCHAIN_FILE="$startdir/toolchains/generic/NaCl-newlib-x86-64.cmake" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/nacl \
-DWITH_MAGNUMINFO=OFF \
-DWITH_MAGNUMINFO=ON \
-DWITH_NACLAPPLICATION=ON \
-DWITH_WINDOWLESSNACLAPPLICATION=ON \
-DBUILD_STATIC=ON

19
src/Platform/CMakeLists.txt

@ -156,11 +156,20 @@ endif()
# Magnum Info
if(WITH_MAGNUMINFO)
if(UNIX)
add_executable(magnum-info magnum-info.cpp)
if(NOT UNIX AND NOT CORRADE_TARGET_NACL)
message(FATAL_ERROR "magnum-info is not available on this platform. Set WITH_MAGNUMINFO to OFF to suppress this warning.")
endif()
add_executable(magnum-info magnum-info.cpp)
if(UNIX AND NOT CORRADE_TARGET_NACL)
target_link_libraries(magnum-info Magnum MagnumWindowlessGlxApplication ${X11_LIBRARIES})
install(TARGETS magnum-info DESTINATION ${MAGNUM_BINARY_INSTALL_DIR})
else()
message(WARNING "magnum-info is currently available only on Unix. Set WITH_MAGNUMINFO to OFF to suppress this warning.")
elseif(CORRADE_TARGET_NACL)
target_link_libraries(magnum-info Magnum MagnumWindowlessNaClApplication ppapi_cpp ppapi)
endif()
install(TARGETS magnum-info DESTINATION ${MAGNUM_BINARY_INSTALL_DIR})
if(CORRADE_TARGET_NACL)
install(FILES magnum-info-nacl.html DESTINATION ${MAGNUM_DATA_INSTALL_DIR} RENAME magnum-info.html)
install(FILES magnum-info-nacl.nmf DESTINATION ${MAGNUM_DATA_INSTALL_DIR} RENAME magnum-info.nmf)
endif()
endif()

91
src/Platform/magnum-info-nacl.html

@ -0,0 +1,91 @@
<!DOCTYPE html>
<html>
<head>
<title>Magnum Info</title>
<style type="text/css">
body {
margin: 0px;
padding: 0px;
font-family: sans-serif;
background-color: #111111;
color: #aaaaaa;
}
h1 {
text-align: center;
font-size: 20px;
}
#listener {
border-style: solid;
border-color: #333333;
border-width: 1px;
padding: 1px;
width: 640px;
height: 480px;
margin-left: auto;
margin-right: auto;
margin-top: 20px;
margin-bottom: 20px;
position: relative;
}
#module {
visibility: hidden;
position: absolute;
}
#info {
width: 640px;
height: 480px;
overflow: auto;
font-family: monospace;
white-space: pre-wrap;
}
#status {
position: absolute;
width: 640px;
text-align: center;
top: 200px;
font-size: 30px;
font-weight: bold;
z-index: 9;
}
</style>
</head>
<body onload="pageLoaded();">
<h1>Magnum Info</h1>
<div id="listener">
<script type="text/javascript">
var module = null;
function pageLoaded() {
if(!module) setStatus('Loading...');
}
function moduleLoaded() {
module = document.getElementById('module');
setStatus('');
}
function messageReceived(message) {
var info = document.getElementById('info');
info.innerHTML += message.data;
}
function setStatus(message) {
var status = document.getElementById('status');
if(status) status.innerHTML = message;
}
var listener = document.getElementById('listener');
listener.addEventListener('load', moduleLoaded, true);
listener.addEventListener('message', messageReceived, true);
</script>
<embed name="nacl" id="module" type="application/x-nacl" src="magnum-info.nmf" />
<div id="status">Initialization...</div>
<div id="info"></div>
</div>
</body>
</html>

6
src/Platform/magnum-info-nacl.nmf

@ -0,0 +1,6 @@
{
"program": {
"x86-32": {"url": "magnum-info-x86-32.nexe"},
"x86-64": {"url": "magnum-info-x86-64.nexe"}
}
}

14
src/Platform/magnum-info.cpp

@ -24,9 +24,16 @@
#include <Utility/Debug.h>
#include <corradeCompatibility.h>
#ifdef CORRADE_TARGET_NACL
#include <Utility/NaClStreamBuffer.h>
#endif
#include "Context.h"
#ifndef CORRADE_TARGET_NACL
#include "Platform/WindowlessGlxApplication.h"
#else
#include "Platform/WindowlessNaClApplication.h"
#endif
namespace Magnum {
@ -40,6 +47,13 @@ class MagnumInfo: public Platform::WindowlessApplication {
MagnumInfo::MagnumInfo(const Arguments& arguments): Platform::WindowlessApplication(arguments) {
Context* c = Context::current();
/* Pass debug output as messages to JavaScript */
#ifdef CORRADE_TARGET_NACL
Utility::NaClMessageStreamBuffer buffer(this);
std::ostream out(&buffer);
Debug::setOutput(&out);
#endif
Debug() << "";
Debug() << " +---------------------------------------------------------+";
Debug() << " | Information about Magnum engine and OpenGL capabilities |";

Loading…
Cancel
Save