mirror of
				https://github.com/bytecodealliance/wasm-micro-runtime.git
				synced 2025-10-31 05:11:19 +00:00 
			
		
		
		
	 27e7e160af
			
		
	
	
		27e7e160af
		
			
		
	
	
	
	
		
			
			Upgrade the version of related toolkits: - upgrade llvm to 15.0 - upgrade wasi-sdk to 19.0 - upgrade emsdk to 3.1.28 - upgrade wabt to 1.0.31 - upgrade binaryen to 111 And upgrade the CI scripts, sample workload build scripts, Dockerfiles, and documents.
		
			
				
	
	
		
			101 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #
 | |
| # Copyright (C) 2019 Intel Corporation.  All rights reserved.
 | |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 | |
| #
 | |
| 
 | |
| #!/bin/bash
 | |
| 
 | |
| ####################################
 | |
| #   build wasm-av1 sample   #
 | |
| ####################################
 | |
| if [ ! -d "${EMSDK}" ]; then
 | |
|     echo "can not find emsdk. "
 | |
|     echo "please refer to https://emscripten.org/docs/getting_started/downloads.html "
 | |
|     echo "to install it, or active it by 'source <emsdk_dir>emsdk_env.sh'"
 | |
|     exit
 | |
| fi
 | |
| 
 | |
| set -xe
 | |
| 
 | |
| EMSDK_WASM_DIR="${EMSDK}/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten"
 | |
| BUILD_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
 | |
| OUT_DIR="${BUILD_SCRIPT_DIR}/out"
 | |
| WASM_AV1_DIR="${BUILD_SCRIPT_DIR}/wasm-av1"
 | |
| 
 | |
| WAMR_PLATFORM_DIR="${BUILD_SCRIPT_DIR}/../../../product-mini/platforms"
 | |
| IWASM_CMD="${WAMR_PLATFORM_DIR}/linux/build/iwasm"
 | |
| 
 | |
| WAMRC_DIR="${BUILD_SCRIPT_DIR}/../../../wamr-compiler"
 | |
| WAMRC_CMD="${WAMRC_DIR}/build/wamrc"
 | |
| 
 | |
| function Clear_Before_Exit
 | |
| {
 | |
|     [[ -f ${WASM_AV1_DIR}/wasm-av1.patch ]] &&
 | |
|        rm -f ${WASM_AV1_DIR}/wasm-av1.patch
 | |
|     # resume the libc.a under EMSDK_WASM_DIR
 | |
|     cd ${EMSDK_WASM_DIR}
 | |
|     mv libc.a.bak libc.a
 | |
| }
 | |
| 
 | |
| # 1.hack emcc
 | |
| cd ${EMSDK_WASM_DIR}
 | |
| # back up libc.a
 | |
| cp libc.a libc.a.bak
 | |
| # delete some objects in libc.a
 | |
| emar d libc.a fopen.o
 | |
| emar d libc.a fread.o
 | |
| emar d libc.a feof.o
 | |
| emar d libc.a fclose.o
 | |
| 
 | |
| # 2. build wasm-av1
 | |
| cd ${BUILD_SCRIPT_DIR}
 | |
| # 2.1 clone wasm-av1 repo from Github
 | |
| if [ ! -d "wasm-av1" ]; then
 | |
|     git clone https://github.com/GoogleChromeLabs/wasm-av1.git
 | |
| fi
 | |
| 
 | |
| # 2.2 copy the wasm-av1.patch to wasm-av1 and apply the patch
 | |
| cd ${WASM_AV1_DIR}
 | |
| cp -a ${BUILD_SCRIPT_DIR}/wasm-av1.patch .
 | |
| git checkout Makefile
 | |
| git checkout test.c
 | |
| git checkout third_party/aom
 | |
| 
 | |
| if [[ $(git apply wasm-av1.patch 2>&1) =~ "error" ]]; then
 | |
|     echo "git apply patch failed, please check wasm-av1 related changes..."
 | |
|     Clear_Before_Exit
 | |
|     exit 0
 | |
| fi
 | |
| 
 | |
| make testavx -j 4
 | |
| 
 | |
| # remove patch file and recover emcc libc.a after building
 | |
| Clear_Before_Exit
 | |
| 
 | |
| # 2.3 copy /make/gen target files to out/
 | |
| rm -rf ${OUT_DIR} && mkdir ${OUT_DIR}
 | |
| cp -a ${WASM_AV1_DIR}/testavx.wasm ${OUT_DIR}/
 | |
| 
 | |
| # 3. compile wasm-av1.wasm to wasm-av1.aot with wamrc
 | |
| # 3.1 build wamr-compiler
 | |
| cd ${WAMRC_DIR}
 | |
| ./build_llvm.sh
 | |
| rm -fr build && mkdir build
 | |
| cd build && cmake ..
 | |
| make
 | |
| # 3.2 compile wasm-av1.wasm to wasm-av1.aot
 | |
| cd ${OUT_DIR}
 | |
| ${WAMRC_CMD} -o testavx.aot testavx.wasm
 | |
| 
 | |
| # 4. build iwasm with pthread and libc_emcc enable
 | |
| cd ${WAMR_PLATFORM_DIR}/linux
 | |
| rm -fr build && mkdir build
 | |
| cd build && cmake .. -DWAMR_BUILD_LIB_PTHREAD=1 -DWAMR_BUILD_LIBC_EMCC=1
 | |
| make
 | |
| 
 | |
| # 5. run wasm-av1 with iwasm
 | |
| echo "---> run testav1.aot with iwasm"
 | |
| cd ${OUT_DIR}
 | |
| ${IWASM_CMD} testavx.aot ../wasm-av1/third_party/samples/elephants_dream_480p24.ivf
 | |
| 
 |