themblem/alg/Makefile
2025-11-02 21:07:10 +00:00

107 lines
2.7 KiB
Makefile

.PHONY: FORCE default
CV_DIR := $(shell pwd)/../opencv
CV_INSTALL_DIR := $(CV_DIR)/install
CV_WASM_DIR := $(CV_DIR)/build/wasm
CXX := ccache g++
CXXFLAGS := -O2 -std=c++17 -Wall -Werror -g -I$(CV_INSTALL_DIR)/include/opencv4
ifeq ($(shell uname), Darwin)
RPATH_FLAG := -Wl,-rpath,'@executable_path/lib'
STATIC :=
IMAGE_VIEWER := open
else
RPATH_FLAG := -Wl,-rpath,'$$ORIGIN/lib'
STATIC := 1
IMAGE_VIEWER := feh
endif
USE_PULSAR :=
START_GROUP := -Wl,--start-group
END_GROUP := -Wl,--end-group
CV_PKG_CONFIG_PATH := $(shell pwd)/../opencv/install/lib/pkgconfig/
OPENCV_FLAGS := $(filter-out -lIconv::Iconv, \
$(shell PKG_CONFIG_PATH=$(CV_PKG_CONFIG_PATH) pkg-config opencv4 --libs --cflags $(if $(STATIC), --static)) \
)
default: qrtool qrtool.wx.wasm.br qrtool.web.js
qrtool: CXXFLAGS += -DWECHAT_QRCODE_USE_MODEL=1
qrtool: qrtool.cpp libqr.cpp \
$(if $(USE_PULSAR), mq_worker.cpp) \
base64.cpp mq_worker.h base64.h \
http.o \
Makefile
$(CXX) -o $@ \
$(if $(STATIC), -static) \
$(filter %.cpp %.o, $^) \
-DQRTOOL_MAIN=1 \
$(if $(USE_PULSAR), -lpulsar) \
$(CXXFLAGS) \
$(RPATH_FLAG) \
$(if $(STATIC), $(START_GROUP) -ljbig) \
$(OPENCV_FLAGS) \
$(if $(STATIC), $(END_GROUP)) \
-Wno-error=unused-function \
qrtool.zip: qrtool
rm -rf qrtool.zip-workdir
mkdir -p qrtool.zip-workdir
cp qrtool qrtool.zip-workdir/qrtool.$(shell git describe --always).x86_64
cd qrtool.zip-workdir && zip qrtool.zip qrtool.$(shell git describe --always).x86_64 && mv qrtool.zip ..
rm -rf qrtool.zip-workdir
qrtool.web.js: EMCC_FLAGS := \
-O3
qrtool.wx.js: EMCC_FLAGS := \
-O3 \
--pre-js pre.wx.js \
--post-js post.wx.js
SIMD128_OPTS := -msimd128
SIMD128_OPTS :=
qrtool.wx.js: pre.wx.js post.wx.js
qrtool.wx.js qrtool.web.js: qrtool_wasm.cpp libqr.cpp Makefile
source ../../emsdk/emsdk_env.sh && emcc \
-o $@ -I$(CV_INSTALL_DIR)/include/opencv4 $(filter %.cpp, $^) \
$(addprefix $(CV_WASM_DIR)/lib/, \
libopencv_core.a \
libopencv_dnn.a \
libopencv_imgproc.a \
libopencv_wechat_qrcode.a \
) \
$(addprefix $(CV_WASM_DIR)/3rdparty/lib/, \
libzlib.a) \
'-sEXPORTED_FUNCTIONS=["_qrtool_angle","_malloc","_free"]' \
'-sEXPORTED_RUNTIME_METHODS=["ccall","cwrap","_wasm_call_ctors"]' \
"-sMIN_CHROME_VERSION=73" \
"-sMIN_SAFARI_VERSION=140100" \
-sALLOW_MEMORY_GROWTH=1 \
-sENVIRONMENT=web \
$(SIMD128_OPTS) \
-std=c++17 \
-fexceptions \
-lembind \
-g1 \
-sWASM=1 \
$(EMCC_FLAGS)
qrtool.wx.wasm.br: qrtool.wx.js
brotli -kf qrtool.wx.wasm
install-scanner: qrtool.wx.wasm.br
@cp -v qrtool.wx.js qrtool.wx.wasm.br ../scanner/pages/emblemscanner/
@cp -v qrtool.wx.js ../scanner/pages/emblemscanner/worker/
install-web: qrtool.web.wasm
@cp -v qrtool.web.js qrtool.web.wasm ../web/public/camera-5.0/js/
install: install-web install-scanner