blob: 53d92f2d097f099700d5e2d83f793422c2ada319 [file]
# 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)