-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild-wasm.sh
More file actions
executable file
·96 lines (84 loc) · 2.72 KB
/
build-wasm.sh
File metadata and controls
executable file
·96 lines (84 loc) · 2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/bin/bash
# Docker build script for WebAssembly module
# No local Emscripten installation needed - just Docker
set -e
echo "================================"
echo "Building WebAssembly Module"
echo "================================"
echo ""
# Get the directory of this script
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PROJECT_ROOT="$( cd "$SCRIPT_DIR/.." && pwd )"
OUTPUT_DIR="$PROJECT_ROOT/wasm"
# Check if Docker is installed
if ! command -v docker &> /dev/null; then
echo "❌ Error: Docker is not installed!"
echo ""
echo "Please install Docker from: https://www.docker.com/get-started"
exit 1
fi
echo "✓ Docker is installed"
echo ""
# Create output directory
mkdir -p "$OUTPUT_DIR"
echo "Building with Docker..."
echo ""
cd "$PROJECT_ROOT"
# Build using Docker with Emscripten
docker run --rm \
-v "$PROJECT_ROOT:/project" \
-v "$PROJECT_ROOT/texture2ddecoder/src:/project-src" \
-w /project \
emscripten/emsdk:latest \
bash -c '
echo "Compiling C++ to WebAssembly..."
emcc \
/project-src/Texture2DDecoder/bcn.cpp \
/project-src/Texture2DDecoder/pvrtc.cpp \
/project-src/Texture2DDecoder/etc.cpp \
/project-src/Texture2DDecoder/atc.cpp \
/project-src/Texture2DDecoder/astc.cpp \
/project-src/Texture2DDecoder/crunch.cpp \
/project-src/Texture2DDecoder/unitycrunch.cpp \
/project/wasm_bindings.cpp \
-I/project-src/Texture2DDecoder \
-D__LITTLE_ENDIAN__=1 \
-O3 \
-s WASM=1 \
-s ALLOW_MEMORY_GROWTH=1 \
-s MODULARIZE=1 \
-s EXPORT_NAME="createModule" \
-s EXPORT_ES6=1 \
-s ENVIRONMENT=web,worker,node \
-s FILESYSTEM=0 \
-s DISABLE_EXCEPTION_CATCHING=0 \
-s ALLOW_TABLE_GROWTH=1 \
-s EXPORTED_RUNTIME_METHODS=["ccall","cwrap"] \
-s INCOMING_MODULE_JS_API=["locateFile"] \
--bind \
-std=c++17 \
-o /project/wasm/texture2ddecoder.js 2>&1 | grep -v "warning:"
if [ ${PIPESTATUS[0]} -eq 0 ]; then
echo ""
echo "✓ Build successful!"
else
echo ""
echo "✗ Build failed!"
exit 1
fi
'
if [ $? -eq 0 ]; then
echo ""
echo "Generated files:"
echo " - $OUTPUT_DIR/texture2ddecoder.js"
echo " - $OUTPUT_DIR/texture2ddecoder.wasm"
echo ""
echo "Next steps:"
echo " npm install # Install dependencies"
echo " npm run build:ts # Build TypeScript"
echo " npm test # Run tests"
else
echo ""
echo "Build failed - see errors above"
exit 1
fi