pcbjam/wasm/stubs/nng_stub.c
Viktor Vaczi 898e079ef2 Enable 3D viewer in KiCad WASM build
Build the 3D viewer code for WASM instead of stubbing it out.
This is simpler to maintain than complex header stubs.

Changes:
- Enable KICAD_BUILD_3D_VIEWER_WASM=ON in build script
- Remove -gsource-map to avoid OOM in wasm-emscripten-finalize
- Add OpenGL stubs for fixed-function pipeline (WebGL ES 2.0 only)
- Add GLU stub for gluErrorString
- Add NNG stub for IPC API (sockets don't work in WASM)
- Add PCBnew scripting stub
- Expand curl and libgit2 stubs

The 3D viewer code compiles but won't render at runtime since
OpenGL GAL is disabled and Cairo GAL is used instead.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 14:21:29 +01:00

66 lines
1.3 KiB
C

/*
* NNG stub implementation for KiCad WASM build
* Socket-based IPC is not supported in browsers.
* These stubs allow the code to compile but return errors indicating unsupported.
*/
#include "nng/nng.h"
// All NNG operations fail in WASM since sockets aren't available
// Using NNG_ENOENT as a generic "not available" error
int nng_rep0_open(nng_socket *s) {
if (s) {
s->id = -1;
}
return NNG_ENOENT;
}
int nng_listener_create(nng_listener *l, nng_socket s, const char *url) {
(void)s;
(void)url;
if (l) {
l->id = -1;
}
return NNG_ENOENT;
}
int nng_socket_set_ms(nng_socket s, const char *opt, nng_duration dur) {
(void)s;
(void)opt;
(void)dur;
return NNG_ENOENT;
}
int nng_listener_start(nng_listener l, int flags) {
(void)l;
(void)flags;
return NNG_ENOENT;
}
int nng_recv(nng_socket s, void *data, size_t *sizep, int flags) {
(void)s;
(void)data;
(void)sizep;
(void)flags;
return NNG_ENOENT;
}
int nng_send(nng_socket s, void *data, size_t size, int flags) {
(void)s;
(void)data;
(void)size;
(void)flags;
return NNG_ENOENT;
}
int nng_close(nng_socket s) {
(void)s;
return 0; // Close always succeeds
}
void nng_free(void *ptr, size_t size) {
(void)ptr;
(void)size;
// Nothing to free in stub
}