112 lines
2.8 KiB
Makefile
112 lines
2.8 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 :=
|
|
|
|
ENABLE_GRPC :=
|
|
|
|
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 \
|
|
$(if $(ENABLE_GRPC), fileprocess.o fileprocess.pb.o fileprocess.grpc.pb.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
|
|
|
|
fileprocess.o: fileprocess.grpc.pb.h
|
|
|
|
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/assets
|
|
@cp -v qrtool.wx.js ../scanner/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
|