# 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)