| # Build the tinygltf v3 C WASM module for the three.js demo. |
| # |
| # Requires an Emscripten SDK. The default EMSDK path is $(HOME)/work/emsdk; |
| # override with `make EMSDK=/path/to/emsdk`. |
| |
| EMSDK ?= $(HOME)/work/emsdk |
| ROOT := $(abspath ../) |
| |
| SHELL := /bin/bash |
| EMCC := source $(EMSDK)/emsdk_env.sh && emcc |
| |
| CFLAGS := -O3 -std=c11 -Wall -Wextra -I$(ROOT) |
| EMFLAGS := -sMODULARIZE=1 \ |
| -sEXPORT_ES6=1 \ |
| -sEXPORT_NAME=createTinyGLTF \ |
| -sENVIRONMENT=web \ |
| -sALLOW_MEMORY_GROWTH=1 \ |
| -sSTACK_SIZE=1048576 \ |
| -sFILESYSTEM=0 \ |
| -sEXPORTED_FUNCTIONS=_malloc,_free \ |
| -sEXPORTED_RUNTIME_METHODS=getValue,setValue,UTF8ToString,HEAP32,HEAPU32,HEAPF32,HEAPU8 |
| |
| SRC := $(ROOT)/tiny_gltf_v3.c loader.c |
| OUT_JS := tinygltf_v3.js |
| OUT_WASM := tinygltf_v3.wasm |
| SAMPLE := Cube.glb |
| |
| .PHONY: all sample serve clean |
| |
| all: $(OUT_JS) |
| |
| $(OUT_JS): loader.c Makefile $(ROOT)/tiny_gltf_v3.h $(ROOT)/tiny_gltf_v3.c $(ROOT)/tinygltf_json_c.h |
| $(EMCC) $(CFLAGS) $(EMFLAGS) -o $(OUT_JS) $(SRC) |
| |
| # Generate a small self-contained textured sample GLB (Cube.glb). |
| sample: |
| python3 gen_sample.py |
| |
| # Serve the demo locally (http://localhost:8000) |
| serve: |
| python3 -m http.server 8000 |
| |
| clean: |
| rm -f $(OUT_JS) $(OUT_WASM) $(SAMPLE) |