mirror of
				https://github.com/bytecodealliance/wasm-micro-runtime.git
				synced 2025-10-31 05:11:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!python3
 | |
| #
 | |
| # Copyright (C) 2019 Intel Corporation.  All rights reserved.
 | |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 | |
| #
 | |
| 
 | |
| 
 | |
| import os
 | |
| from collections import OrderedDict
 | |
| 
 | |
| 
 | |
| def CLI_ARGS_GENREATOR(running_modes_supported: list[str]) -> list[str]:
 | |
|     res = []
 | |
|     list_2d = [["--default-running-mode={} --module-running-mode={}".format(i, j)
 | |
|                 for i in running_modes_supported] for j in running_modes_supported]
 | |
|     for list_1d in list_2d:
 | |
|         res.extend(list_1d)
 | |
|     return res
 | |
| 
 | |
| 
 | |
| def main():
 | |
|     RUNNING_MODES: list[str] = [
 | |
|         "interp",
 | |
|         "fast-jit",
 | |
|         "llvm-jit",
 | |
|         "multi-tier-jit",
 | |
|     ]
 | |
| 
 | |
|     COMPILE_FLAGS: list[str] = [
 | |
|         "-DWAMR_BUILD_FAST_INTERP=0 -DWAMR_BUILD_INTERP=1 -DWAMR_BUILD_FAST_JIT=0 -DWAMR_BUILD_JIT=0",
 | |
|         "-DWAMR_BUILD_FAST_JIT=1",
 | |
|         "-DWAMR_BUILD_FAST_JIT=0 -DWAMR_BUILD_JIT=1",
 | |
|         "-DWAMR_BUILD_FAST_JIT=1 -DWAMR_BUILD_JIT=1 -DWAMR_BUILD_LAZY_JIT=1",
 | |
|         "-DWAMR_BUILD_FAST_JIT=1 -DWAMR_BUILD_JIT=1 -DWAMR_BUILD_LAZY_JIT=0",
 | |
|     ]
 | |
| 
 | |
|     # Python 3.7+: Dictionary iteration order is guaranteed to be in order of insertion.
 | |
|     # just to be safe, using orderreddict
 | |
|     # key: value -> compile mode, {"compile_flag": CMake compile flag, "iwasm_cli_args": array of CLI args tested}
 | |
|     test_options = OrderedDict({
 | |
|         "INTERP": {"compile_flag": COMPILE_FLAGS[0], "cli_args": CLI_ARGS_GENREATOR(RUNNING_MODES[:1])},
 | |
|         "FAST_JIT": {"compile_flag": COMPILE_FLAGS[1], "cli_args": CLI_ARGS_GENREATOR(RUNNING_MODES[:2])},
 | |
|         "LLVM_JIT": {"compile_flag": COMPILE_FLAGS[2],
 | |
|                      "cli_args": CLI_ARGS_GENREATOR([RUNNING_MODES[0], RUNNING_MODES[2]])},
 | |
|         "MULTI_TIER_JIT": {"compile_flag": COMPILE_FLAGS[3], "cli_args": CLI_ARGS_GENREATOR(RUNNING_MODES)},
 | |
|         "EAGER_JIT_WITH_BOTH_JIT": {"compile_flag": COMPILE_FLAGS[4],
 | |
|                                     "cli_args": CLI_ARGS_GENREATOR(RUNNING_MODES[:3])}
 | |
|     })
 | |
| 
 | |
|     build_cmd = "./build_c_embed.sh \"{build_flag}\""
 | |
|     run_cmd = "cd c-embed/build && ./c_embed_test {cli_args}"
 | |
| 
 | |
|     for compile_mode in test_options.keys():
 | |
|         build_flag: str = test_options[compile_mode]["compile_flag"]
 | |
|         cli_args_li: list = test_options[compile_mode]["cli_args"]
 | |
|         # compile
 | |
|         print("\r\n\r\nCompile C program embed WAMR in {} mode".format(compile_mode))
 | |
|         ret = os.system(build_cmd.format(build_flag=build_flag))
 | |
|         if ret:
 | |
|             print("Compile failed")
 | |
|         # iter over cli args combination
 | |
|         for cli_args in cli_args_li:
 | |
|             print(run_cmd.format(cli_args=cli_args))
 | |
|             ret = os.system(run_cmd.format(cli_args=cli_args))
 | |
|         if ret:
 | |
|             break
 | |
|         else:  # if inner for loop finish normally
 | |
|             continue
 | |
| 
 | |
|         # if break from inner for loop
 | |
|         print("Run failed")
 | |
|         break
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     main()
 | 
