From 1856a8a1823bbb9d918ee7d17a89d6dbf419cb65 Mon Sep 17 00:00:00 2001 From: zhao-baiyi Date: Tue, 9 Apr 2024 08:14:20 +0000 Subject: [PATCH] [BUILD]buildtools paths normalization Description:The build path using prebuilds is not uniform, and it is necessary to standardize these paths. Issue:https://gitee.com/openharmony/third_party_llvm-project/issues/I987NT Test: LLVM toolchain compilation Signed-off-by: zhao-baiyi --- llvm-build/build.py | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/llvm-build/build.py b/llvm-build/build.py index bef40a27305b..52b0e5b04ba5 100755 --- a/llvm-build/build.py +++ b/llvm-build/build.py @@ -36,6 +36,7 @@ class BuildConfig(): # Defines public methods and functions and obtains script parameters. def __init__(self): + self.discover_paths() args = self.parse_args() self.no_strip_libs = args.no_strip_libs self.do_build = not args.skip_build @@ -53,6 +54,7 @@ class BuildConfig(): self.need_lldb_server = self.do_build and 'lldb-server' not in args.no_build self.build_python = args.build_python self.build_with_debug_info = args.build_with_debug_info + self.build_path=args.build_path self.no_build_arm = args.skip_build or args.no_build_arm self.no_build_aarch64 = args.skip_build or args.no_build_aarch64 @@ -71,7 +73,6 @@ class BuildConfig(): self.build_libs_flags = args.build_libs_flags self.compression_format = args.compression_format self.enable_check_abi = args.enable_check_abi - self.discover_paths() self.TARGETS = 'AArch64;ARM;BPF;Mips;RISCV;X86' self.ORIG_ENV = dict(os.environ) @@ -115,7 +116,7 @@ class BuildConfig(): self.PACKAGES_PATH = os.path.join(self.REPOROOT_DIR, 'packages') @staticmethod - def parse_add_argument(parser): + def parse_add_argument(self, parser): parser.add_argument( '--no-strip-libs', @@ -274,6 +275,12 @@ class BuildConfig(): const=True, default=False, help='check libc++_shared.so abi') + + parser.add_argument( + '--build-path', + type=str, + default=os.path.join(self.REPOROOT_DIR + 'prebuilts'), + help='Select the compilation path, if there is no default prebuilds') def parse_args(self): @@ -295,7 +302,7 @@ class BuildConfig(): default=False, help='Omit the packaging, perform the packaging step directly.') - self.parse_add_argument(parser) + self.parse_add_argument(self, parser) class SeparatedListByCommaAction(argparse.Action): @@ -387,9 +394,10 @@ class BuildUtils(object): def __init__(self, build_config): self.build_config = build_config + self.build_path = os.path.join(self.build_config.REPOROOT_DIR, 'prebuilts') self.CMAKE_BIN_DIR = os.path.abspath( - os.path.join(self.build_config.REPOROOT_DIR, 'prebuilts/cmake', self.platform_prefix(), 'bin')) + os.path.join(self.build_path, 'cmake', self.platform_prefix(), 'bin')) self._mingw_python_dir = None def open_ohos_triple(self, arch): @@ -408,7 +416,7 @@ class BuildUtils(object): install=True, build_threads=False): - ninja_bin_path = os.path.join(self.build_config.REPOROOT_DIR, 'prebuilts/build-tools', self.platform_prefix(), 'bin', 'ninja') + ninja_bin_path = os.path.join(self.build_path, 'build-tools', self.platform_prefix(), 'bin', 'ninja') ninja_list = ['-l{}'.format(build_threads)] if build_threads else [] @@ -556,12 +564,12 @@ class BuildUtils(object): platform_path = self.platform_prefix() if (self.host_is_darwin()): platform_path = "darwin-x86" - python_dir = os.path.join(self.build_config.REPOROOT_DIR, 'prebuilts', self.build_config.LLDB_PYTHON, + python_dir = os.path.join(self.build_path, self.build_config.LLDB_PYTHON, platform_path, self.build_config.LLDB_PY_DETAILED_VERSION) return python_dir def get_prebuilts_dir(self, name): - prebuilts_dir = os.path.abspath(os.path.join(self.build_config.REPOROOT_DIR, 'prebuilts', name)) + prebuilts_dir = os.path.abspath(os.path.join(self.build_path, name)) return prebuilts_dir def rm_build_output(self): @@ -786,8 +794,7 @@ class LlvmCore(BuildUtils): build_instrumented=False, xunit_xml_output=None): - llvm_clang_install = os.path.abspath(os.path.join(self.build_config.REPOROOT_DIR, - 'prebuilts/clang/ohos', self.use_platform(), + llvm_clang_install = os.path.abspath(os.path.join(self.build_path, 'clang/ohos', self.use_platform(), 'clang-%s' % self.build_config.CLANG_VERSION)) llvm_path = self.merge_out_path('llvm_make') llvm_profdata = os.path.join(llvm_clang_install, 'bin', 'llvm-profdata') @@ -955,7 +962,7 @@ class LlvmCore(BuildUtils): windows_defines): - zlib_path = self.merge_out_path('../', 'prebuilts', 'clang', 'host', 'windows-x86', 'toolchain-prebuilts', + zlib_path = self.merge_out_path(self.build_path, 'clang', 'host', 'windows-x86', 'toolchain-prebuilts', 'zlib') zlib_inc = os.path.join(zlib_path, 'include') zlib_lib = os.path.join(zlib_path, 'lib') @@ -1033,7 +1040,7 @@ class SysrootComposer(BuildUtils): # but it didn't contain these two lines, so we still need OHOS.cmake. ohos_cmake = 'OHOS.cmake' dst_dir = self.merge_out_path( - '../prebuilts/cmake/%s/share/cmake-3.16/Modules/Platform' % self.platform_prefix()) + self.build_path, './cmake/%s/share/cmake-3.16/Modules/Platform' % self.platform_prefix()) src_file = '%s/%s' % (self.build_config.LLVM_BUILD_DIR, ohos_cmake) if os.path.exists(os.path.join(dst_dir, ohos_cmake)): os.remove(os.path.join(dst_dir, ohos_cmake)) @@ -1750,7 +1757,7 @@ class LlvmLibs(BuildUtils): libncurses_src_dir = os.path.abspath(os.path.join(self.build_config.REPOROOT_DIR, 'third_party', 'ncurses')) libncurses_build_path = self.merge_out_path('ncurses') libncurses_install_path = self.get_prebuilts_dir('ncurses') - prebuilts_path = os.path.join(self.build_config.REPOROOT_DIR, 'prebuilts') + prebuilts_path = os.path.join(self.build_path) self.check_rm_tree(libncurses_build_path) self.rm_cmake_cache(libncurses_build_path) @@ -1775,8 +1782,7 @@ class LlvmLibs(BuildUtils): self.logger().info('Building lzma') target_triple = self.use_platform() liblzma_build_path = self.merge_out_path('lzma') - llvm_clang_prebuilts = os.path.abspath(os.path.join(self.build_config.REPOROOT_DIR, - 'prebuilts', 'clang', 'ohos', self.use_platform(), + llvm_clang_prebuilts = os.path.abspath(os.path.join(self.build_path, 'clang', 'ohos', self.use_platform(), 'clang-%s' % self.build_config.CLANG_VERSION, 'bin', 'clang')) src_dir = os.path.abspath(os.path.join(self.build_config.REPOROOT_DIR, 'third_party', 'lzma', 'C')) cmd = [ 'make', @@ -1812,7 +1818,7 @@ class LlvmLibs(BuildUtils): libedit_src_dir = os.path.abspath(os.path.join(self.build_config.REPOROOT_DIR, 'third_party', 'libedit')) libedit_build_path = self.merge_out_path('libedit') libedit_install_path = self.get_prebuilts_dir('libedit') - prebuilts_path = os.path.join(self.build_config.REPOROOT_DIR, 'prebuilts') + prebuilts_path = os.path.join(self.build_path) self.check_rm_tree(libedit_build_path) self.rm_cmake_cache(libedit_build_path) @@ -2312,7 +2318,7 @@ class LlvmPackage(BuildUtils): lib_dst_path = os.path.join(install_dir, 'lib') - lib_src_path = self.merge_out_path('../prebuilts', 'ncurses', 'lib') + lib_src_path = self.merge_out_path(self.build_path, 'ncurses', 'lib') libncurses_src = os.path.join(lib_src_path, 'libncurses%s' % shlib_ext) libpanel_src = os.path.join(lib_src_path, 'libpanel%s' % shlib_ext) libform_src = os.path.join(lib_src_path, 'libform%s' % shlib_ext) @@ -2343,7 +2349,7 @@ class LlvmPackage(BuildUtils): if self.host_is_linux(): shlib_ext = '.so.0' - libedit_lib_path = self.merge_out_path('../prebuilts', 'libedit', 'lib') + libedit_lib_path = self.merge_out_path(self.build_path, 'libedit', 'lib') libedit_src = os.path.join(libedit_lib_path, 'libedit%s' % shlib_ext) lib_dst_path = os.path.join(install_dir, 'lib') -- Gitee