emscripten_docker/povray_wasm/build.sh

71 lines
1.9 KiB
Bash

#!/bin/bash -x
EMAIL="himattmcwilliams@gmail.com"
NAME="Matt McWilliams"
BOOST_ROOT=/opt/libboost/lib
# https://jeromewu.github.io/build-ffmpeg-webassembly-version-part-3-v0.1/
# altered for povray
# verify Emscripten version
emcc -v > build.log
cd unix/
sh prebuild.sh
# configure povray
CFLAGS="-pthread -DBOOST_THREAD_USE_LIB -s USE_BOOST_HEADERS=1"
LDFLAGS="$CFLAGS -s INITIAL_MEMORY=33554432" # 33554432 bytes = 32 MB
CONFIG_ARGS=(
--arch=x86_32 # use x86_32 to achieve minimal architectural optimization
--enable-cross-compile # enable cross compile
--disable-x86asm # disable x86 asm
--disable-inline-asm # disable inline asm
--disable-stripping # disable stripping
--disable-programs # disable programs build (incl. ffplay, ffprobe & ffmpeg)
--disable-doc # disable doc
--extra-cflags="$CFLAGS"
--extra-cxxflags="$CFLAGS"
--extra-ldflags="$LDFLAGS"
--nm="llvm-nm -g"
--ar=emar
--as=llvm-as
--ranlib=llvm-ranlib
--cc=emcc
--cxx=em++
--objcc=emcc
--dep-cc=emcc
)
ARGS=(
LIBS="-lboost_system -lboost_thread -lboost_date_time"
COMPILED_BY="$NAME <$EMAIL>"
CC=emcc
CXX=em++
CFLAGS="$CFLAGS"
CXXFLAGS="$CFLAGS"
LDFLAGS="$LDFLAGS"
--host=wasm32
)
BOOST_ROOT=$BOOST_ROOT emconfigure ./configure "${ARGS[@]}"
# build dependencies
emmake make -j
exit
# build ffmpeg.wasm
mkdir -p wasm/dist
ARGS=(
-I. -I./fftools
-Llibavcodec -Llibavdevice -Llibavfilter -Llibavformat -Llibavresample -Llibavutil -Llibpostproc -Llibswscale -Llibswresample
-Qunused-arguments
-o wasm/dist/ffmpeg.js fftools/ffmpeg_opt.c fftools/ffmpeg_filter.c fftools/ffmpeg_hw.c fftools/cmdutils.c fftools/ffmpeg.c
-lavdevice -lavfilter -lavformat -lavcodec -lswresample -lswscale -lavutil -lm
-s USE_SDL=2 # use SDL2
-s USE_PTHREADS=1 # enable pthreads support
-s INITIAL_MEMORY=33554432 # 33554432 bytes = 32 MB
)
emcc "${ARGS[@]}"