Files
squoosh/codecs/basis/Makefile
2021-05-20 10:37:28 +01:00

89 lines
2.2 KiB
Makefile

CODEC_URL := https://github.com/BinomialLLC/basis_universal/archive/refs/tags/v1.15_rel2.tar.gz
CODEC_DIR := node_modules/basis
ENVIRONMENT = worker
OUT_JS := enc/basis_enc.js dec/basis_dec.js
OUT_WASM := $(OUT_JS:.js=.wasm)
COMMON_FLAGS := -O3 -fno-strict-aliasing
override CXXFLAGS += $(COMMON_FLAGS)
override CFLAGS += $(COMMAN_FLAGS)
CODEC_CPP_SOURCE_FILES := \
encoder/basisu_comp.cpp \
encoder/basisu_enc.cpp \
encoder/basisu_backend.cpp \
encoder/basisu_basis_file.cpp \
encoder/basisu_etc.cpp \
encoder/basisu_uastc_enc.cpp \
encoder/basisu_gpu_texture.cpp \
encoder/basisu_frontend.cpp \
encoder/basisu_bc7enc.cpp \
encoder/basisu_pvrtc1_4.cpp \
encoder/basisu_astc_decomp.cpp \
encoder/basisu_global_selector_palette_helpers.cpp \
encoder/basisu_resampler.cpp \
encoder/basisu_kernels_sse.cpp \
encoder/jpgd.cpp \
encoder/lodepng.cpp \
transcoder/basisu_transcoder.cpp
CODEC_C_SOURCE_FILES := \
encoder/apg_bmp.c \
zstd/zstd.c
CODEC_CPP_OBJECT_FILES := $(CODEC_CPP_SOURCE_FILES:.cpp=.o)
CODEC_C_OBJECT_FILES := $(CODEC_C_SOURCE_FILES:.c=.o)
CODEC_CPP_OBJECT_FILE_PATHS := $(addprefix $(CODEC_DIR)/, $(CODEC_CPP_OBJECT_FILES))
CODEC_C_OBJECT_FILE_PATHS := $(addprefix $(CODEC_DIR)/, $(CODEC_C_OBJECT_FILES))
override CXXFLAGS += -DBASISU_FORCE_DEVEL_MESSAGES=1
.PHONY: all clean
.PRECIOUS: $(CODEC_C_OBJECT_FILES) $(CODEC_CPP_OBJECT_FILES)
all: $(CODEC_DIR) $(OUT_JS)
# Define dependencies for all variations of build artifacts.
$(filter enc/%,$(OUT_JS)): enc/basis_enc.cpp
$(filter dec/%,$(OUT_JS)): dec/basis_dec.cpp
# enc/mozjpeg_node_enc.js dec/mozjpeg_node_dec.js: ENVIRONMENT = node
%.js: $(CODEC_CPP_OBJECT_FILE_PATHS) $(CODEC_C_OBJECT_FILE_PATHS)
$(CXX) \
-I $(CODEC_DIR)/encoder \
-I $(CODEC_DIR)/transcoder \
${CXXFLAGS} \
${LDFLAGS} \
--closure 1 \
--bind \
-s ALLOW_MEMORY_GROWTH=1 \
-s MODULARIZE=1 \
-s TEXTDECODER=2 \
-s ENVIRONMENT=$(ENVIRONMENT) \
-s EXPORT_ES6=1 \
-o $@ \
$+
$(CODEC_CPP_OBJECT_FILES): $(CODEC_DIR)
$(CXX) \
${CXXFLAGS} \
-o $@ \
-c $(@:.o=.cpp)
$(CODEC_C_OBJECT_FILES): $(CODEC_DIR)
$(CC) \
${CFLAGS} \
-o $@ \
-c $(@:.o=.c)
$(CODEC_DIR):
mkdir -p $@
curl -sL $(CODEC_URL) | tar xz --strip 1 -C $@
clean:
$(RM) $(OUT_JS) $(OUT_WASM)