mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-02-06 15:05:19 +00:00
e4023c8e02
Enable RISCV AOT support, the supported ABIs are LP64 and LP64D for riscv64, ILP32 and ILP32D for riscv32. For wamrc: use --target=riscv64/riscv32 to specify the target arch of output AOT file, use --target-abi=lp64d/lp64/ilp32d/ilp32 to specify the target ABI, if --target-abi isn't specified, by default lp64d is used for riscv64, and ilp32d is used for riscv32. Signed-off-by: Huang Qi <huangqi3@xiaomi.com> Co-authored-by: wenyongh <wenyong.huang@intel.com>
99 lines
3.3 KiB
Python
99 lines
3.3 KiB
Python
#
|
|
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
#
|
|
|
|
#!/usr/bin/env python3
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
def clone_llvm():
|
|
llvm_dir = Path("llvm")
|
|
if(llvm_dir.exists() == False):
|
|
print("Clone llvm to core/deps/ ..")
|
|
for line in os.popen("git clone --branch release/11.x https://github.com/llvm/llvm-project.git llvm"):
|
|
print(line)
|
|
else:
|
|
print("llvm source codes already existed")
|
|
return llvm_dir
|
|
|
|
""" def detect_VS_version():
|
|
program_dirs = [os.environ['ProgramFiles(x86)'], os.environ['ProgramFiles']]
|
|
for dir in program_dirs:
|
|
vswhere = Path("{}\\Microsoft Visual Studio\\Installer\\vswhere.exe".format(dir))
|
|
if (vswhere.exists()):
|
|
print('"{}" -version 14.0,16.0'.format(vswhere))
|
|
for line in os.popen('"{}" -version 14.0,16.0'.format(vswhere)):
|
|
keyvalue = line.split(':', maxsplit=1)
|
|
if(keyvalue[0] == "installationPath"):
|
|
value = keyvalue[1].strip()
|
|
for line in os.popen('"{}\\VC\\Auxiliary\\Build\\vcvars32.bat"'.format(value)):
|
|
print(line)
|
|
break """
|
|
|
|
|
|
def main():
|
|
current_os = sys.platform
|
|
print("current OS is ", current_os)
|
|
|
|
current_dir = Path.cwd()
|
|
deps_dir = current_dir.joinpath( "../core/deps")
|
|
|
|
os.chdir(deps_dir)
|
|
llvm_dir = clone_llvm()
|
|
os.chdir(llvm_dir)
|
|
|
|
if(current_os == "linux"):
|
|
build_dir_name = "build"
|
|
llvm_file = "bin/llvm-lto"
|
|
# generator = '"Unix Makefiles"'
|
|
elif(current_os == "win32"):
|
|
build_dir_name = "win32build"
|
|
llvm_file = "LLVM.sln"
|
|
# generator = '"Visual Studio 15 2017"'
|
|
else:
|
|
build_dir_name = "build"
|
|
# generator = '""'
|
|
|
|
Path(build_dir_name).mkdir(exist_ok = True)
|
|
build_dir = Path(build_dir_name)
|
|
os.chdir(build_dir)
|
|
|
|
if ( not Path(llvm_file).exists()):
|
|
core_number = os.cpu_count()
|
|
print("Build llvm with", core_number, " cores")
|
|
cmd = 'cmake ../llvm \
|
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
|
-DCMAKE_BUILD_TYPE:STRING="Release" \
|
|
-DLLVM_TARGETS_TO_BUILD:STRING="X86;ARM;AArch64;Mips;RISCV" \
|
|
-DLLVM_INCLUDE_GO_TESTS=OFF \
|
|
-DLLVM_INCLUDE_TOOLS=OFF \
|
|
-DLLVM_INCLUDE_UTILS=OFF \
|
|
-DLLVM_ENABLE_TERMINFO=OFF \
|
|
-DLLVM_BUILD_LLVM_DYLIB:BOOL=OFF \
|
|
-DLLVM_OPTIMIZED_TABLEGEN:BOOL=ON \
|
|
-DLLVM_ENABLE_ZLIB:BOOL=OFF \
|
|
-DLLVM_INCLUDE_DOCS:BOOL=OFF \
|
|
-DLLVM_INCLUDE_EXAMPLES:BOOL=OFF \
|
|
-DLLVM_INCLUDE_TESTS:BOOL=OFF \
|
|
-DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF \
|
|
-DLLVM_APPEND_VC_REV:BOOL=OFF'
|
|
print(cmd)
|
|
for line in os.popen(cmd):
|
|
print(line)
|
|
else:
|
|
print("llvm has already been Cmaked")
|
|
|
|
if(current_os == "linux"):
|
|
for line in os.popen("make -j {}".format(core_number)):
|
|
print(line)
|
|
elif(current_os == "win32"):
|
|
print("Please open LLVM.sln in {} to build *Release* version".format(build_dir.absolute()))
|
|
|
|
os.chdir(current_dir)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|