forked from external-repos/squoosh
Update AVIF build to produce shipped wasm (#823)
* argh * It works! * Silly me * Changes following feedback
This commit is contained in:
@@ -7,3 +7,6 @@ end_of_line = lf
|
|||||||
charset = utf-8
|
charset = utf-8
|
||||||
trim_trailing_whitespace = true
|
trim_trailing_whitespace = true
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
|
|
||||||
|
[Makefile]
|
||||||
|
indent_style = tab
|
||||||
|
|||||||
@@ -1,49 +1,50 @@
|
|||||||
CODEC_URL = https://github.com/AOMediaCodec/libavif/archive/v0.8.1.tar.gz
|
CODEC_URL = https://github.com/AOMediaCodec/libavif/archive/v0.8.1.tar.gz
|
||||||
CODEC_DIR = node_modules/libavif
|
CODEC_PACKAGE = node_modules/libavif.tar.gz
|
||||||
CODEC_BUILD_DIR := $(CODEC_DIR)/build
|
|
||||||
CODEC_OUT := $(CODEC_BUILD_DIR)/libavif.a
|
CODEC_ENC_DIR = node_modules/libavif-enc
|
||||||
|
CODEC_ENC_BUILD_DIR := $(CODEC_ENC_DIR)/build
|
||||||
|
CODEC_ENC_OUT := $(CODEC_ENC_BUILD_DIR)/libavif.a
|
||||||
|
|
||||||
|
CODEC_DEC_DIR = node_modules/libavif-dec
|
||||||
|
CODEC_DEC_BUILD_DIR := $(CODEC_DEC_DIR)/build
|
||||||
|
CODEC_DEC_OUT := $(CODEC_DEC_BUILD_DIR)/libavif.a
|
||||||
|
|
||||||
LIBAOM_URL = https://aomedia.googlesource.com/aom/+archive/v2.0.0.tar.gz
|
LIBAOM_URL = https://aomedia.googlesource.com/aom/+archive/v2.0.0.tar.gz
|
||||||
LIBAOM_DIR := $(CODEC_DIR)/ext/aom
|
LIBAOM_PACKAGE = node_modules/libaom.tar.gz
|
||||||
LIBAOM_BUILD_DIR := $(LIBAOM_DIR)/build.libavif
|
|
||||||
LIBAOM_OUT := $(LIBAOM_BUILD_DIR)/libaom.a
|
|
||||||
|
|
||||||
OUT_JS = enc/avif_enc.js dec/avif_dec.js
|
LIBAOM_ENC_DIR := $(CODEC_ENC_DIR)/ext/aom
|
||||||
OUT_WASM = $(OUT_JS:.js=.wasm)
|
LIBAOM_ENC_BUILD_DIR := $(LIBAOM_ENC_DIR)/build.libavif
|
||||||
|
LIBAOM_ENC_OUT := $(LIBAOM_ENC_BUILD_DIR)/libaom.a
|
||||||
|
|
||||||
.PHONY: all clean
|
LIBAOM_DEC_DIR := $(CODEC_DEC_DIR)/ext/aom
|
||||||
|
LIBAOM_DEC_BUILD_DIR := $(LIBAOM_DEC_DIR)/build.libavif
|
||||||
|
LIBAOM_DEC_OUT := $(LIBAOM_DEC_BUILD_DIR)/libaom.a
|
||||||
|
|
||||||
all: $(OUT_JS)
|
OUT_ENC_JS = enc/avif_enc.js
|
||||||
|
OUT_ENC_CPP = $(OUT_ENC_JS:.js=.cpp)
|
||||||
|
OUT_ENC_WASM = $(OUT_ENC_JS:.js=.wasm)
|
||||||
|
|
||||||
%.js: %.cpp $(LIBAOM_OUT) $(CODEC_OUT)
|
OUT_DEC_JS = dec/avif_dec.js
|
||||||
$(CXX) \
|
OUT_DEC_CPP = $(OUT_DEC_JS:.js=.cpp)
|
||||||
-I $(CODEC_DIR)/include \
|
OUT_DEC_WASM = $(OUT_DEC_JS:.js=.wasm)
|
||||||
${CXXFLAGS} \
|
|
||||||
|
# ERROR_ON_UNDEFINED_SYMBOLS=0 is needed to seperate the encoder and decoder
|
||||||
|
EMSCRIPTEN_FLAGS = ${CXXFLAGS} \
|
||||||
${LDFLAGS} \
|
${LDFLAGS} \
|
||||||
--bind \
|
--bind \
|
||||||
--closure 1 \
|
--closure 1 \
|
||||||
-s ALLOW_MEMORY_GROWTH=1 \
|
-s ALLOW_MEMORY_GROWTH=1 \
|
||||||
-s MODULARIZE=1 \
|
-s MODULARIZE=1 \
|
||||||
-s 'EXPORT_NAME="$(basename $(@F))"' \
|
-s ERROR_ON_UNDEFINED_SYMBOLS=0
|
||||||
-o $@ \
|
|
||||||
$+
|
|
||||||
|
|
||||||
$(CODEC_OUT): $(CODEC_DIR)/CMakeLists.txt $(LIBAOM_OUT)
|
CODEC_EMCMAKE = emcmake cmake \
|
||||||
mkdir -p $(CODEC_BUILD_DIR)
|
|
||||||
cd $(CODEC_BUILD_DIR) && \
|
|
||||||
emcmake cmake \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
-DBUILD_SHARED_LIBS=0 \
|
-DBUILD_SHARED_LIBS=0 \
|
||||||
-DAVIF_CODEC_AOM=1 \
|
-DAVIF_CODEC_AOM=1 \
|
||||||
-DAVIF_LOCAL_AOM=1 \
|
-DAVIF_LOCAL_AOM=1 \
|
||||||
../ && \
|
../
|
||||||
$(MAKE)
|
|
||||||
|
|
||||||
$(LIBAOM_OUT): $(LIBAOM_DIR)/CMakeLists.txt
|
LIBAOM_FLAGS = -DCMAKE_BUILD_TYPE=Release \
|
||||||
mkdir -p $(LIBAOM_BUILD_DIR)
|
|
||||||
cd $(LIBAOM_BUILD_DIR) && \
|
|
||||||
emcmake cmake \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DENABLE_CCACHE=0 \
|
-DENABLE_CCACHE=0 \
|
||||||
-DAOM_TARGET_CPU=generic \
|
-DAOM_TARGET_CPU=generic \
|
||||||
-DENABLE_DOCS=0 \
|
-DENABLE_DOCS=0 \
|
||||||
@@ -54,23 +55,82 @@ $(LIBAOM_OUT): $(LIBAOM_DIR)/CMakeLists.txt
|
|||||||
-DCONFIG_INSPECTION=0 \
|
-DCONFIG_INSPECTION=0 \
|
||||||
-DCONFIG_MULTITHREAD=0 \
|
-DCONFIG_MULTITHREAD=0 \
|
||||||
-DCONFIG_RUNTIME_CPU_DETECT=0 \
|
-DCONFIG_RUNTIME_CPU_DETECT=0 \
|
||||||
-DCONFIG_WEBM_IO=0 \
|
-DCONFIG_WEBM_IO=0
|
||||||
|
|
||||||
|
.PHONY: all clean
|
||||||
|
|
||||||
|
all: $(OUT_ENC_JS) $(OUT_DEC_JS)
|
||||||
|
|
||||||
|
$(OUT_ENC_JS): $(OUT_ENC_CPP) $(LIBAOM_ENC_OUT) $(CODEC_ENC_OUT)
|
||||||
|
$(CXX) \
|
||||||
|
-I $(CODEC_ENC_DIR)/include \
|
||||||
|
${EMSCRIPTEN_FLAGS} \
|
||||||
|
-s 'EXPORT_NAME="$(basename $(@F))"' \
|
||||||
|
-o $@ \
|
||||||
|
$+
|
||||||
|
|
||||||
|
$(OUT_DEC_JS): $(OUT_DEC_CPP) $(LIBAOM_DEC_OUT) $(CODEC_DEC_OUT)
|
||||||
|
$(CXX) \
|
||||||
|
-I $(CODEC_DEC_DIR)/include \
|
||||||
|
${EMSCRIPTEN_FLAGS} \
|
||||||
|
-s 'EXPORT_NAME="$(basename $(@F))"' \
|
||||||
|
-o $@ \
|
||||||
|
$+
|
||||||
|
|
||||||
|
$(CODEC_ENC_OUT): $(CODEC_ENC_DIR)/CMakeLists.txt $(LIBAOM_ENC_OUT)
|
||||||
|
mkdir -p $(CODEC_ENC_BUILD_DIR)
|
||||||
|
cd $(CODEC_ENC_BUILD_DIR) && \
|
||||||
|
$(CODEC_EMCMAKE) && \
|
||||||
|
$(MAKE)
|
||||||
|
|
||||||
|
$(CODEC_DEC_OUT): $(CODEC_DEC_DIR)/CMakeLists.txt $(LIBAOM_DEC_OUT)
|
||||||
|
mkdir -p $(CODEC_DEC_BUILD_DIR)
|
||||||
|
cd $(CODEC_DEC_BUILD_DIR) && \
|
||||||
|
$(CODEC_EMCMAKE) && \
|
||||||
|
$(MAKE)
|
||||||
|
|
||||||
|
$(LIBAOM_ENC_OUT): $(LIBAOM_ENC_DIR)/CMakeLists.txt
|
||||||
|
mkdir -p $(LIBAOM_ENC_BUILD_DIR)
|
||||||
|
cd $(LIBAOM_ENC_BUILD_DIR) && \
|
||||||
|
emcmake cmake \
|
||||||
|
$(LIBAOM_FLAGS) \
|
||||||
|
-DCONFIG_AV1_DECODER=0 \
|
||||||
|
-DCONFIG_AV1_HIGHBITDEPTH=0 \
|
||||||
../ && \
|
../ && \
|
||||||
$(MAKE)
|
$(MAKE)
|
||||||
|
|
||||||
$(CODEC_DIR)/CMakeLists.txt: $(CODEC_DIR)
|
$(LIBAOM_DEC_OUT): $(LIBAOM_DEC_DIR)/CMakeLists.txt
|
||||||
|
mkdir -p $(LIBAOM_DEC_BUILD_DIR)
|
||||||
|
cd $(LIBAOM_DEC_BUILD_DIR) && \
|
||||||
|
emcmake cmake \
|
||||||
|
$(LIBAOM_FLAGS) \
|
||||||
|
-DCONFIG_AV1_ENCODER=0 \
|
||||||
|
../ && \
|
||||||
|
$(MAKE)
|
||||||
|
|
||||||
$(LIBAOM_DIR)/CMakeLists.txt: $(LIBAOM_DIR)
|
$(CODEC_ENC_DIR)/CMakeLists.txt: $(CODEC_ENC_DIR)
|
||||||
|
$(CODEC_DEC_DIR)/CMakeLists.txt: $(CODEC_DEC_DIR)
|
||||||
|
|
||||||
$(CODEC_DIR):
|
$(LIBAOM_ENC_DIR)/CMakeLists.txt: $(LIBAOM_ENC_DIR)
|
||||||
|
$(LIBAOM_DEC_DIR)/CMakeLists.txt: $(LIBAOM_DEC_DIR)
|
||||||
|
|
||||||
|
$(CODEC_PACKAGE):
|
||||||
|
curl -sL $(CODEC_URL) -o $@
|
||||||
|
|
||||||
|
$(LIBAOM_PACKAGE):
|
||||||
|
curl -sL $(LIBAOM_URL) -o $@
|
||||||
|
|
||||||
|
$(CODEC_ENC_DIR) $(CODEC_DEC_DIR): $(CODEC_PACKAGE)
|
||||||
mkdir -p $@
|
mkdir -p $@
|
||||||
curl -sL $(CODEC_URL) | tar xz --strip 1 -C $@
|
tar xz --strip 1 -C $@ -f $(CODEC_PACKAGE)
|
||||||
|
|
||||||
$(LIBAOM_DIR):
|
$(LIBAOM_ENC_DIR) $(LIBAOM_DEC_DIR): $(LIBAOM_PACKAGE)
|
||||||
mkdir -p $@
|
mkdir -p $@
|
||||||
curl -sL $(LIBAOM_URL) | tar xz -C $@
|
tar xz -C $@ -f $(LIBAOM_PACKAGE)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) $(OUT_JS) $(OUT_WASM)
|
$(RM) $(LIBAOM_PACKAGE) $(CODEC_PACKAGE) $(OUT_ENC_JS) $(OUT_ENC_WASM) $(OUT_DEC_JS) $(OUT_DEC_WASM)
|
||||||
$(MAKE) -C $(CODEC_BUILD_DIR) clean
|
$(MAKE) -C $(CODEC_ENC_BUILD_DIR) clean
|
||||||
$(MAKE) -C $(LIBAOM_BUILD_DIR) clean
|
$(MAKE) -C $(CODEC_DEC_BUILD_DIR) clean
|
||||||
|
$(MAKE) -C $(LIBAOM_ENC_BUILD_DIR) clean
|
||||||
|
$(MAKE) -C $(LIBAOM_DEC_BUILD_DIR) clean
|
||||||
|
|||||||
Reference in New Issue
Block a user