diff --git a/cmake/wasi-sdk-sysroot.cmake b/cmake/wasi-sdk-sysroot.cmake index b3dd5c6..a78ddf4 100644 --- a/cmake/wasi-sdk-sysroot.cmake +++ b/cmake/wasi-sdk-sysroot.cmake @@ -347,7 +347,7 @@ endif() add_custom_target(build ALL) foreach(target IN LISTS WASI_SDK_TARGETS) add_custom_target(build-${target}) - add_dependencies(build-${target} wasi-libc-${target} compiler-rt) + add_dependencies(build-${target} libcxx-${target} wasi-libc-${target} compiler-rt) add_dependencies(build build-${target}) endforeach() diff --git a/cmake/wasi-sdk-toolchain.cmake b/cmake/wasi-sdk-toolchain.cmake index 1d9e8b6..e53d4c4 100644 --- a/cmake/wasi-sdk-toolchain.cmake +++ b/cmake/wasi-sdk-toolchain.cmake @@ -157,6 +157,7 @@ copy_misc_file(wasi-sdk.cmake cmake) copy_misc_file(wasi-sdk-pthread.cmake cmake) copy_misc_file(wasi-sdk-p1.cmake cmake) copy_misc_file(wasi-sdk-p2.cmake cmake) +copy_misc_file(wasi-sdk-p3.cmake cmake) copy_misc_file(cmake/Platform/WASI.cmake cmake/Platform) function(copy_cfg_file compiler) diff --git a/version.py b/version.py index 62f0ff9..fe05d97 100755 --- a/version.py +++ b/version.py @@ -13,6 +13,10 @@ import sys # The number of characters to use for the abbreviated Git revision. GIT_REF_LEN = 12 +# Some special major versions that are not just numbers, e.g. "experimental-threading". +KNOWN_SPECIAL_RELEASES = [ + 'experimental-threading' +] def exec(command, cwd): result = subprocess.run(command, stdout=subprocess.PIPE, @@ -23,14 +27,22 @@ def exec(command, cwd): def git_commit(dir): return exec(['git', 'rev-parse', f'--short={GIT_REF_LEN}', 'HEAD'], dir) - def parse_git_version(version): # Parse, e.g.: wasi-sdk-21-0-g317548590b40+m + assert version.startswith('wasi-sdk-'), f'unexpected version format: {version}' + version = version.removeprefix('wasi-sdk-') + + prefix = '' + for special in KNOWN_SPECIAL_RELEASES: + if version.startswith(f'{special}-'): + prefix = f'{special}-' + version = version.removeprefix(f'{special}-') + break + parts = version.replace('+', '-').split('-') - assert parts.pop(0) == 'wasi' - assert parts.pop(0) == 'sdk' - major, minor = parts.pop(0), parts.pop(0) + major = prefix + parts.pop(0) if prefix else parts.pop(0) + minor = parts.pop(0) git = None dirty = False @@ -58,6 +70,12 @@ assert parse_git_version('wasi-sdk-21-2+m') == ('21', '2', None, True) assert parse_git_version( 'wasi-sdk-23-0-g317548590b40') == ('23', '0', None, False) +assert parse_git_version( + 'wasi-sdk-experimental-threading-21-1-g317548590b40+m') == ('experimental-threading-21', '1', '317548590b40', True) +assert parse_git_version('wasi-sdk-experimental-threading-21-2+m') == ('experimental-threading-21', '2', None, True) +assert parse_git_version( + 'wasi-sdk-experimental-threading-23-0-g317548590b40') == ('experimental-threading-23', '0', None, False) + def git_version(): version = exec(['git', 'describe', '--long', '--candidates=999',