Skip to content

Commit 94b40d1

Browse files
Merge pull request #81799 from kateinoigakukun/yt/unify-wasmllvmruntime-build-dir
[wasm] Unify WasmLLVMRuntimeLibs and WasmThreadsLLVMRuntimeLibs build directories
2 parents ff8b9f1 + 1592c9e commit 94b40d1

File tree

4 files changed

+84
-84
lines changed

4 files changed

+84
-84
lines changed

utils/swift_build_support/swift_build_support/build_script_invocation.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -670,8 +670,6 @@ def compute_product_pipelines(self):
670670
is_enabled=self.args.build_wasmstdlib)
671671
builder.add_product(products.WasmLLVMRuntimeLibs,
672672
is_enabled=self.args.build_wasmstdlib)
673-
builder.add_product(products.WasmThreadsLLVMRuntimeLibs,
674-
is_enabled=self.args.build_wasmstdlib)
675673

676674
builder.add_product(products.SwiftTestingMacros,
677675
is_enabled=self.args.build_swift_testing_macros)

utils/swift_build_support/swift_build_support/products/__init__.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
from .swiftpm import SwiftPM
4343
from .swiftsyntax import SwiftSyntax
4444
from .tsan_libdispatch import TSanLibDispatch
45-
from .wasisysroot import WASILibc, WasmLLVMRuntimeLibs, WasmThreadsLLVMRuntimeLibs
45+
from .wasisysroot import WASILibc, WasmLLVMRuntimeLibs
4646
from .wasmkit import WasmKit
4747
from .wasmstdlib import WasmStdlib, WasmThreadsStdlib
4848
from .wasmswiftsdk import WasmSwiftSDK
@@ -88,7 +88,6 @@
8888
'WasmLLVMRuntimeLibs',
8989
'WasmKit',
9090
'WasmStdlib',
91-
'WasmThreadsLLVMRuntimeLibs',
9291
'WasmThreadsStdlib',
9392
'WasmSwiftSDK',
9493
]

utils/swift_build_support/swift_build_support/products/wasisysroot.py

Lines changed: 80 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -130,53 +130,61 @@ def should_install(self, host_target):
130130
return False
131131

132132
def build(self, host_target):
133-
self._build(host_target)
133+
self._build(host_target, enable_wasi_threads=False,
134+
compiler_rt_os_dir='wasi', target_triple='wasm32-wasi')
135+
self._build(host_target, enable_wasi_threads=True,
136+
compiler_rt_os_dir='wasip1', target_triple='wasm32-wasip1-threads')
137+
138+
def _build(self, host_target, enable_wasi_threads, compiler_rt_os_dir, target_triple):
139+
cmake = cmake_product.CMakeProduct(
140+
args=self.args,
141+
toolchain=self.toolchain,
142+
source_dir=self.source_dir,
143+
build_dir=os.path.join(self.build_dir, target_triple))
134144

135-
def _build(self, host_target, enable_wasi_threads=False,
136-
compiler_rt_os_dir='wasi', target_triple='wasm32-wasi'):
137145
build_root = os.path.dirname(self.build_dir)
138146
llvm_build_bin_dir = os.path.join(
139147
'..', build_root, '%s-%s' % ('llvm', host_target), 'bin')
140-
llvm_tools_path = self.args.native_llvm_tools_path or llvm_build_bin_dir
141-
clang_tools_path = self.args.native_clang_tools_path or llvm_build_bin_dir
148+
llvm_tools_path = cmake.args.native_llvm_tools_path or llvm_build_bin_dir
149+
clang_tools_path = cmake.args.native_clang_tools_path or llvm_build_bin_dir
142150

143151
cmake_has_threads = 'TRUE' if enable_wasi_threads else 'FALSE'
144152

145-
self.cmake_options.define(
153+
cmake.cmake_options.define(
146154
'CMAKE_SYSROOT:PATH',
147155
WASILibc.sysroot_build_path(build_root, host_target, target_triple))
148156
enable_runtimes = ['libcxx', 'libcxxabi', 'compiler-rt']
149-
self.cmake_options.define('LLVM_ENABLE_RUNTIMES:STRING',
150-
';'.join(enable_runtimes))
157+
cmake.cmake_options.define('LLVM_ENABLE_RUNTIMES:STRING',
158+
';'.join(enable_runtimes))
151159

152160
libdir_suffix = '/' + target_triple
153-
self.cmake_options.define('LIBCXX_LIBDIR_SUFFIX:STRING', libdir_suffix)
154-
self.cmake_options.define('LIBCXXABI_LIBDIR_SUFFIX:STRING', libdir_suffix)
155-
self.cmake_options.define('CMAKE_STAGING_PREFIX:PATH', '/')
156-
157-
self.cmake_options.define('COMPILER_RT_DEFAULT_TARGET_ARCH:STRING', 'wasm32')
158-
self.cmake_options.define('COMPILER_RT_DEFAULT_TARGET_ONLY:BOOL', 'TRUE')
159-
self.cmake_options.define('COMPILER_RT_BAREMETAL_BUILD:BOOL', 'TRUE')
160-
self.cmake_options.define('COMPILER_RT_BUILD_XRAY:BOOL', 'FALSE')
161-
self.cmake_options.define('COMPILER_RT_BUILD_PROFILE:BOOL', 'TRUE')
162-
self.cmake_options.define('COMPILER_RT_INCLUDE_TESTS:BOOL', 'FALSE')
163-
self.cmake_options.define('COMPILER_RT_HAS_FPIC_FLAG:BOOL', 'FALSE')
164-
self.cmake_options.define('COMPILER_RT_EXCLUDE_ATOMIC_BUILTIN:BOOL', 'FALSE')
165-
self.cmake_options.define('COMPILER_RT_OS_DIR:STRING', compiler_rt_os_dir)
166-
167-
self.cmake_options.define('CMAKE_C_COMPILER_WORKS:BOOL', 'TRUE')
168-
self.cmake_options.define('CMAKE_CXX_COMPILER_WORKS:BOOL', 'TRUE')
169-
170-
self.cmake_options.define('CMAKE_SYSTEM_NAME:STRING', 'WASI')
171-
self.cmake_options.define('CMAKE_SYSTEM_PROCESSOR:STRING', 'wasm32')
172-
self.cmake_options.define('CMAKE_AR:FILEPATH',
173-
os.path.join(llvm_tools_path, 'llvm-ar'))
174-
self.cmake_options.define('CMAKE_RANLIB:FILEPATH',
175-
os.path.join(llvm_tools_path, 'llvm-ranlib'))
176-
self.cmake_options.define('CMAKE_C_COMPILER:FILEPATH',
177-
os.path.join(clang_tools_path, 'clang'))
178-
self.cmake_options.define('CMAKE_CXX_COMPILER:STRING',
179-
os.path.join(clang_tools_path, 'clang++'))
161+
cmake.cmake_options.define('LIBCXX_LIBDIR_SUFFIX:STRING', libdir_suffix)
162+
cmake.cmake_options.define('LIBCXXABI_LIBDIR_SUFFIX:STRING', libdir_suffix)
163+
cmake.cmake_options.define('CMAKE_STAGING_PREFIX:PATH', '/')
164+
165+
cmake.cmake_options.define('COMPILER_RT_DEFAULT_TARGET_ARCH:STRING', 'wasm32')
166+
cmake.cmake_options.define('COMPILER_RT_DEFAULT_TARGET_ONLY:BOOL', 'TRUE')
167+
cmake.cmake_options.define('COMPILER_RT_BAREMETAL_BUILD:BOOL', 'TRUE')
168+
cmake.cmake_options.define('COMPILER_RT_BUILD_XRAY:BOOL', 'FALSE')
169+
cmake.cmake_options.define('COMPILER_RT_BUILD_PROFILE:BOOL', 'TRUE')
170+
cmake.cmake_options.define('COMPILER_RT_INCLUDE_TESTS:BOOL', 'FALSE')
171+
cmake.cmake_options.define('COMPILER_RT_HAS_FPIC_FLAG:BOOL', 'FALSE')
172+
cmake.cmake_options.define('COMPILER_RT_EXCLUDE_ATOMIC_BUILTIN:BOOL', 'FALSE')
173+
cmake.cmake_options.define('COMPILER_RT_OS_DIR:STRING', compiler_rt_os_dir)
174+
175+
cmake.cmake_options.define('CMAKE_C_COMPILER_WORKS:BOOL', 'TRUE')
176+
cmake.cmake_options.define('CMAKE_CXX_COMPILER_WORKS:BOOL', 'TRUE')
177+
178+
cmake.cmake_options.define('CMAKE_SYSTEM_NAME:STRING', 'WASI')
179+
cmake.cmake_options.define('CMAKE_SYSTEM_PROCESSOR:STRING', 'wasm32')
180+
cmake.cmake_options.define('CMAKE_AR:FILEPATH',
181+
os.path.join(llvm_tools_path, 'llvm-ar'))
182+
cmake.cmake_options.define('CMAKE_RANLIB:FILEPATH',
183+
os.path.join(llvm_tools_path, 'llvm-ranlib'))
184+
cmake.cmake_options.define('CMAKE_C_COMPILER:FILEPATH',
185+
os.path.join(clang_tools_path, 'clang'))
186+
cmake.cmake_options.define('CMAKE_CXX_COMPILER:STRING',
187+
os.path.join(clang_tools_path, 'clang++'))
180188

181189
c_flags = []
182190
# Explicitly disable exceptions even though it's usually implicitly disabled by
@@ -187,51 +195,45 @@ def _build(self, host_target, enable_wasi_threads=False,
187195
if enable_wasi_threads:
188196
c_flags.append('-pthread')
189197
cxx_flags.append('-pthread')
190-
self.cmake_options.define('CMAKE_C_FLAGS:STRING', ' '.join(c_flags))
191-
self.cmake_options.define('CMAKE_CXX_FLAGS:STRING', ' '.join(cxx_flags))
192-
193-
self.cmake_options.define('CMAKE_C_COMPILER_TARGET:STRING', target_triple)
194-
self.cmake_options.define('CMAKE_CXX_COMPILER_TARGET:STRING', target_triple)
195-
196-
self.cmake_options.define('CXX_SUPPORTS_CXX11:BOOL', 'TRUE')
197-
198-
self.cmake_options.define('LIBCXX_ENABLE_THREADS:BOOL', cmake_has_threads)
199-
self.cmake_options.define('LIBCXX_HAS_PTHREAD_API:BOOL', cmake_has_threads)
200-
self.cmake_options.define('LIBCXX_HAS_EXTERNAL_THREAD_API:BOOL', 'FALSE')
201-
self.cmake_options.define('LIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL', 'FALSE')
202-
self.cmake_options.define('LIBCXX_HAS_WIN32_THREAD_API:BOOL', 'FALSE')
203-
self.cmake_options.define('LIBCXX_ENABLE_SHARED:BOOL', 'FALSE')
204-
self.cmake_options.define('LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY:BOOL', 'FALSE')
205-
self.cmake_options.define('LIBCXX_ENABLE_EXCEPTIONS:BOOL', 'FALSE')
206-
self.cmake_options.define('LIBCXX_ENABLE_FILESYSTEM:BOOL', 'TRUE')
207-
self.cmake_options.define('LIBCXX_CXX_ABI', 'libcxxabi')
208-
self.cmake_options.define('LIBCXX_HAS_MUSL_LIBC:BOOL', 'TRUE')
209-
210-
self.cmake_options.define('LIBCXX_ABI_VERSION', '2')
211-
self.cmake_options.define('LIBCXXABI_ENABLE_EXCEPTIONS:BOOL', 'FALSE')
212-
self.cmake_options.define('LIBCXXABI_ENABLE_SHARED:BOOL', 'FALSE')
213-
self.cmake_options.define('LIBCXXABI_USE_LLVM_UNWINDER:BOOL', 'FALSE')
214-
self.cmake_options.define('LIBCXXABI_SILENT_TERMINATE:BOOL', 'TRUE')
215-
self.cmake_options.define('LIBCXXABI_ENABLE_THREADS:BOOL', cmake_has_threads)
216-
self.cmake_options.define('LIBCXXABI_HAS_PTHREAD_API:BOOL', cmake_has_threads)
217-
self.cmake_options.define('LIBCXXABI_HAS_EXTERNAL_THREAD_API:BOOL', 'FALSE')
218-
self.cmake_options.define('LIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL',
219-
'FALSE')
220-
self.cmake_options.define('LIBCXXABI_HAS_WIN32_THREAD_API:BOOL', 'FALSE')
221-
self.cmake_options.define('LIBCXXABI_ENABLE_PIC:BOOL', 'FALSE')
222-
self.cmake_options.define('UNIX:BOOL', 'TRUE')
223-
224-
self.build_with_cmake([], self.args.build_variant, [],
225-
prefer_native_toolchain=True)
226-
self.install_with_cmake(
198+
cmake.cmake_options.define('CMAKE_C_FLAGS:STRING', ' '.join(c_flags))
199+
cmake.cmake_options.define('CMAKE_CXX_FLAGS:STRING', ' '.join(cxx_flags))
200+
201+
cmake.cmake_options.define('CMAKE_C_COMPILER_TARGET:STRING', target_triple)
202+
cmake.cmake_options.define('CMAKE_CXX_COMPILER_TARGET:STRING', target_triple)
203+
204+
cmake.cmake_options.define('CXX_SUPPORTS_CXX11:BOOL', 'TRUE')
205+
206+
cmake.cmake_options.define('LIBCXX_ENABLE_THREADS:BOOL', cmake_has_threads)
207+
cmake.cmake_options.define('LIBCXX_HAS_PTHREAD_API:BOOL', cmake_has_threads)
208+
cmake.cmake_options.define('LIBCXX_HAS_EXTERNAL_THREAD_API:BOOL', 'FALSE')
209+
cmake.cmake_options.define('LIBCXX_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL', 'FALSE')
210+
cmake.cmake_options.define('LIBCXX_HAS_WIN32_THREAD_API:BOOL', 'FALSE')
211+
cmake.cmake_options.define('LIBCXX_ENABLE_SHARED:BOOL', 'FALSE')
212+
cmake.cmake_options.define('LIBCXX_ENABLE_EXPERIMENTAL_LIBRARY:BOOL', 'FALSE')
213+
cmake.cmake_options.define('LIBCXX_ENABLE_EXCEPTIONS:BOOL', 'FALSE')
214+
cmake.cmake_options.define('LIBCXX_ENABLE_FILESYSTEM:BOOL', 'TRUE')
215+
cmake.cmake_options.define('LIBCXX_CXX_ABI', 'libcxxabi')
216+
cmake.cmake_options.define('LIBCXX_HAS_MUSL_LIBC:BOOL', 'TRUE')
217+
218+
cmake.cmake_options.define('LIBCXX_ABI_VERSION', '2')
219+
cmake.cmake_options.define('LIBCXXABI_ENABLE_EXCEPTIONS:BOOL', 'FALSE')
220+
cmake.cmake_options.define('LIBCXXABI_ENABLE_SHARED:BOOL', 'FALSE')
221+
cmake.cmake_options.define('LIBCXXABI_USE_LLVM_UNWINDER:BOOL', 'FALSE')
222+
cmake.cmake_options.define('LIBCXXABI_SILENT_TERMINATE:BOOL', 'TRUE')
223+
cmake.cmake_options.define('LIBCXXABI_ENABLE_THREADS:BOOL', cmake_has_threads)
224+
cmake.cmake_options.define('LIBCXXABI_HAS_PTHREAD_API:BOOL', cmake_has_threads)
225+
cmake.cmake_options.define('LIBCXXABI_HAS_EXTERNAL_THREAD_API:BOOL', 'FALSE')
226+
cmake.cmake_options.define('LIBCXXABI_BUILD_EXTERNAL_THREAD_LIBRARY:BOOL',
227+
'FALSE')
228+
cmake.cmake_options.define('LIBCXXABI_HAS_WIN32_THREAD_API:BOOL', 'FALSE')
229+
cmake.cmake_options.define('LIBCXXABI_ENABLE_PIC:BOOL', 'FALSE')
230+
cmake.cmake_options.define('UNIX:BOOL', 'TRUE')
231+
232+
cmake.build_with_cmake([], cmake.args.build_variant, [],
233+
prefer_native_toolchain=True)
234+
cmake.install_with_cmake(
227235
["install"], WASILibc.sysroot_install_path(build_root, target_triple))
228236

229237
@classmethod
230238
def get_dependencies(cls):
231239
return [WASILibc, llvm.LLVM]
232-
233-
234-
class WasmThreadsLLVMRuntimeLibs(WasmLLVMRuntimeLibs):
235-
def build(self, host_target):
236-
self._build(host_target, enable_wasi_threads=True,
237-
compiler_rt_os_dir='wasip1', target_triple='wasm32-wasip1-threads')

utils/swift_build_support/swift_build_support/products/wasmswiftsdk.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,6 @@ def _build_target_package(self, swift_host_triple, short_triple,
110110

111111
def build(self, host_target):
112112
build_root = os.path.dirname(self.build_dir)
113-
llvm_runtime_libs_build_path = os.path.join(
114-
build_root, '%s-%s' % ('wasmllvmruntimelibs', host_target))
115113

116114
target_packages = []
117115
# NOTE: We have three types of target triples:
@@ -130,6 +128,9 @@ def build(self, host_target):
130128
build_root, '%s-%s' % (build_basename, host_target))
131129
wasi_sysroot = wasisysroot.WASILibc.sysroot_install_path(
132130
build_root, clang_multiarch_triple)
131+
llvm_runtime_libs_build_path = os.path.join(
132+
build_root, '%s-%s' % ('wasmllvmruntimelibs', host_target),
133+
clang_multiarch_triple)
133134
package_path = self._build_target_package(
134135
swift_host_triple, short_triple, stdlib_build_path,
135136
llvm_runtime_libs_build_path, wasi_sysroot)

0 commit comments

Comments
 (0)