dsh-remote 0.8.47 → 0.8.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/lib/client.js +89 -16
  2. package/lib/ignore.js +46 -0
  3. package/lib/index.js +68 -23
  4. package/lib/remote-shell-child.cjs +305 -0
  5. package/lib/remote-shell.js +518 -0
  6. package/lib/search.js +8 -3
  7. package/package.json +1 -1
  8. package/node_modules/buildcheck/.eslintrc.js +0 -5
  9. package/node_modules/buildcheck/.github/workflows/ci.yml +0 -88
  10. package/node_modules/buildcheck/.github/workflows/lint.yml +0 -27
  11. package/node_modules/buildcheck/.npmignore +0 -3
  12. package/node_modules/buildcheck/LICENSE +0 -19
  13. package/node_modules/buildcheck/README.md +0 -106
  14. package/node_modules/buildcheck/deps/Find-VisualStudio.cs +0 -250
  15. package/node_modules/buildcheck/lib/findvs.js +0 -361
  16. package/node_modules/buildcheck/lib/index.js +0 -738
  17. package/node_modules/buildcheck/package.json +0 -36
  18. package/node_modules/buildcheck/test/test.js +0 -8
  19. package/node_modules/cpu-features/.eslintrc.js +0 -5
  20. package/node_modules/cpu-features/.github/workflows/ci.yml +0 -74
  21. package/node_modules/cpu-features/.github/workflows/lint.yml +0 -27
  22. package/node_modules/cpu-features/LICENSE +0 -19
  23. package/node_modules/cpu-features/README.md +0 -59
  24. package/node_modules/cpu-features/binding.gyp +0 -16
  25. package/node_modules/cpu-features/buildcheck.js +0 -32
  26. package/node_modules/cpu-features/deps/cpu_features/.clang-format +0 -4
  27. package/node_modules/cpu-features/deps/cpu_features/.dockerignore +0 -31
  28. package/node_modules/cpu-features/deps/cpu_features/.github/workflows/Dockerfile +0 -5
  29. package/node_modules/cpu-features/deps/cpu_features/.github/workflows/aarch64_linux_cmake.yml +0 -30
  30. package/node_modules/cpu-features/deps/cpu_features/.github/workflows/amd64_freebsd_cmake.yml +0 -22
  31. package/node_modules/cpu-features/deps/cpu_features/.github/workflows/amd64_linux_bazel.yml +0 -26
  32. package/node_modules/cpu-features/deps/cpu_features/.github/workflows/amd64_linux_cmake.yml +0 -31
  33. package/node_modules/cpu-features/deps/cpu_features/.github/workflows/amd64_macos_cmake.yml +0 -43
  34. package/node_modules/cpu-features/deps/cpu_features/.github/workflows/amd64_windows_cmake.yml +0 -25
  35. package/node_modules/cpu-features/deps/cpu_features/.github/workflows/arm_linux_cmake.yml +0 -31
  36. package/node_modules/cpu-features/deps/cpu_features/.github/workflows/clang_format.yml +0 -24
  37. package/node_modules/cpu-features/deps/cpu_features/.github/workflows/mips_linux_cmake.yml +0 -30
  38. package/node_modules/cpu-features/deps/cpu_features/.github/workflows/power_linux_cmake.yml +0 -29
  39. package/node_modules/cpu-features/deps/cpu_features/.github/workflows/riscv_linux_cmake.yml +0 -28
  40. package/node_modules/cpu-features/deps/cpu_features/.github/workflows/s390x_linux_cmake.yml +0 -27
  41. package/node_modules/cpu-features/deps/cpu_features/.grenrc.yml +0 -21
  42. package/node_modules/cpu-features/deps/cpu_features/BUILD.bazel +0 -329
  43. package/node_modules/cpu-features/deps/cpu_features/CMakeLists.txt +0 -261
  44. package/node_modules/cpu-features/deps/cpu_features/CONTRIBUTING.md +0 -23
  45. package/node_modules/cpu-features/deps/cpu_features/LICENSE +0 -230
  46. package/node_modules/cpu-features/deps/cpu_features/README.md +0 -272
  47. package/node_modules/cpu-features/deps/cpu_features/WORKSPACE +0 -19
  48. package/node_modules/cpu-features/deps/cpu_features/bazel/ci/README.md +0 -5
  49. package/node_modules/cpu-features/deps/cpu_features/bazel/platforms.bzl +0 -11
  50. package/node_modules/cpu-features/deps/cpu_features/cmake/CpuFeaturesConfig.cmake.in +0 -3
  51. package/node_modules/cpu-features/deps/cpu_features/cmake/CpuFeaturesNdkCompatConfig.cmake.in +0 -3
  52. package/node_modules/cpu-features/deps/cpu_features/cmake/README.md +0 -30
  53. package/node_modules/cpu-features/deps/cpu_features/cmake/ci/Makefile +0 -252
  54. package/node_modules/cpu-features/deps/cpu_features/cmake/ci/README.md +0 -40
  55. package/node_modules/cpu-features/deps/cpu_features/cmake/ci/doc/docker.dot +0 -64
  56. package/node_modules/cpu-features/deps/cpu_features/cmake/ci/doc/docker.svg +0 -312
  57. package/node_modules/cpu-features/deps/cpu_features/cmake/ci/doc/generate_image.sh +0 -7
  58. package/node_modules/cpu-features/deps/cpu_features/cmake/ci/docker/amd64/Dockerfile +0 -48
  59. package/node_modules/cpu-features/deps/cpu_features/cmake/ci/docker/toolchain/Dockerfile +0 -34
  60. package/node_modules/cpu-features/deps/cpu_features/cmake/ci/sample/CMakeLists.txt +0 -22
  61. package/node_modules/cpu-features/deps/cpu_features/cmake/ci/sample/main.cpp +0 -11
  62. package/node_modules/cpu-features/deps/cpu_features/cmake/ci/vagrant/freebsd/Vagrantfile +0 -107
  63. package/node_modules/cpu-features/deps/cpu_features/cmake/googletest.CMakeLists.txt.in +0 -15
  64. package/node_modules/cpu-features/deps/cpu_features/cpu_features.gyp +0 -105
  65. package/node_modules/cpu-features/deps/cpu_features/include/cpu_features_cache_info.h +0 -54
  66. package/node_modules/cpu-features/deps/cpu_features/include/cpu_features_macros.h +0 -384
  67. package/node_modules/cpu-features/deps/cpu_features/include/cpuinfo_aarch64.h +0 -259
  68. package/node_modules/cpu-features/deps/cpu_features/include/cpuinfo_arm.h +0 -121
  69. package/node_modules/cpu-features/deps/cpu_features/include/cpuinfo_mips.h +0 -74
  70. package/node_modules/cpu-features/deps/cpu_features/include/cpuinfo_ppc.h +0 -149
  71. package/node_modules/cpu-features/deps/cpu_features/include/cpuinfo_riscv.h +0 -72
  72. package/node_modules/cpu-features/deps/cpu_features/include/cpuinfo_s390x.h +0 -108
  73. package/node_modules/cpu-features/deps/cpu_features/include/cpuinfo_x86.h +0 -288
  74. package/node_modules/cpu-features/deps/cpu_features/include/internal/bit_utils.h +0 -40
  75. package/node_modules/cpu-features/deps/cpu_features/include/internal/cpuid_x86.h +0 -37
  76. package/node_modules/cpu-features/deps/cpu_features/include/internal/filesystem.h +0 -39
  77. package/node_modules/cpu-features/deps/cpu_features/include/internal/hwcaps.h +0 -240
  78. package/node_modules/cpu-features/deps/cpu_features/include/internal/stack_line_reader.h +0 -49
  79. package/node_modules/cpu-features/deps/cpu_features/include/internal/string_view.h +0 -110
  80. package/node_modules/cpu-features/deps/cpu_features/include/internal/windows_utils.h +0 -70
  81. package/node_modules/cpu-features/deps/cpu_features/ndk_compat/CMakeLists.txt +0 -60
  82. package/node_modules/cpu-features/deps/cpu_features/ndk_compat/README.md +0 -4
  83. package/node_modules/cpu-features/deps/cpu_features/ndk_compat/cpu-features.c +0 -205
  84. package/node_modules/cpu-features/deps/cpu_features/ndk_compat/cpu-features.h +0 -320
  85. package/node_modules/cpu-features/deps/cpu_features/ndk_compat/ndk-compat-test.c +0 -12
  86. package/node_modules/cpu-features/deps/cpu_features/patches/0001-Add-Apple-Silicon-Support.patch +0 -456
  87. package/node_modules/cpu-features/deps/cpu_features/scripts/generate_badges.d +0 -165
  88. package/node_modules/cpu-features/deps/cpu_features/scripts/make_release.sh +0 -75
  89. package/node_modules/cpu-features/deps/cpu_features/scripts/run_integration.sh +0 -490
  90. package/node_modules/cpu-features/deps/cpu_features/scripts/test_integration.sh +0 -79
  91. package/node_modules/cpu-features/deps/cpu_features/src/copy.inl +0 -19
  92. package/node_modules/cpu-features/deps/cpu_features/src/define_introspection.inl +0 -86
  93. package/node_modules/cpu-features/deps/cpu_features/src/define_introspection_and_hwcaps.inl +0 -26
  94. package/node_modules/cpu-features/deps/cpu_features/src/equals.inl +0 -22
  95. package/node_modules/cpu-features/deps/cpu_features/src/filesystem.c +0 -62
  96. package/node_modules/cpu-features/deps/cpu_features/src/hwcaps.c +0 -169
  97. package/node_modules/cpu-features/deps/cpu_features/src/impl_aarch64__base_implementation.inl +0 -88
  98. package/node_modules/cpu-features/deps/cpu_features/src/impl_aarch64_linux_or_android.c +0 -79
  99. package/node_modules/cpu-features/deps/cpu_features/src/impl_aarch64_macos_or_iphone.c +0 -82
  100. package/node_modules/cpu-features/deps/cpu_features/src/impl_aarch64_windows.c +0 -138
  101. package/node_modules/cpu-features/deps/cpu_features/src/impl_arm_linux_or_android.c +0 -212
  102. package/node_modules/cpu-features/deps/cpu_features/src/impl_mips_linux_or_android.c +0 -93
  103. package/node_modules/cpu-features/deps/cpu_features/src/impl_ppc_linux.c +0 -163
  104. package/node_modules/cpu-features/deps/cpu_features/src/impl_riscv_linux.c +0 -111
  105. package/node_modules/cpu-features/deps/cpu_features/src/impl_s390x_linux.c +0 -120
  106. package/node_modules/cpu-features/deps/cpu_features/src/impl_x86__base_implementation.inl +0 -2055
  107. package/node_modules/cpu-features/deps/cpu_features/src/impl_x86_freebsd.c +0 -68
  108. package/node_modules/cpu-features/deps/cpu_features/src/impl_x86_linux_or_android.c +0 -58
  109. package/node_modules/cpu-features/deps/cpu_features/src/impl_x86_macos.c +0 -57
  110. package/node_modules/cpu-features/deps/cpu_features/src/impl_x86_windows.c +0 -58
  111. package/node_modules/cpu-features/deps/cpu_features/src/stack_line_reader.c +0 -132
  112. package/node_modules/cpu-features/deps/cpu_features/src/string_view.c +0 -192
  113. package/node_modules/cpu-features/deps/cpu_features/src/utils/list_cpu_features.c +0 -461
  114. package/node_modules/cpu-features/deps/cpu_features/test/CMakeLists.txt +0 -114
  115. package/node_modules/cpu-features/deps/cpu_features/test/bit_utils_test.cc +0 -53
  116. package/node_modules/cpu-features/deps/cpu_features/test/cpuinfo_aarch64_test.cc +0 -396
  117. package/node_modules/cpu-features/deps/cpu_features/test/cpuinfo_arm_test.cc +0 -384
  118. package/node_modules/cpu-features/deps/cpu_features/test/cpuinfo_mips_test.cc +0 -176
  119. package/node_modules/cpu-features/deps/cpu_features/test/cpuinfo_ppc_test.cc +0 -131
  120. package/node_modules/cpu-features/deps/cpu_features/test/cpuinfo_riscv_test.cc +0 -180
  121. package/node_modules/cpu-features/deps/cpu_features/test/cpuinfo_s390x_test.cc +0 -82
  122. package/node_modules/cpu-features/deps/cpu_features/test/cpuinfo_x86_test.cc +0 -1729
  123. package/node_modules/cpu-features/deps/cpu_features/test/filesystem_for_testing.cc +0 -103
  124. package/node_modules/cpu-features/deps/cpu_features/test/filesystem_for_testing.h +0 -61
  125. package/node_modules/cpu-features/deps/cpu_features/test/hwcaps_for_testing.cc +0 -52
  126. package/node_modules/cpu-features/deps/cpu_features/test/hwcaps_for_testing.h +0 -31
  127. package/node_modules/cpu-features/deps/cpu_features/test/stack_line_reader_test.cc +0 -132
  128. package/node_modules/cpu-features/deps/cpu_features/test/string_view_test.cc +0 -202
  129. package/node_modules/cpu-features/lib/index.js +0 -5
  130. package/node_modules/cpu-features/package.json +0 -40
  131. package/node_modules/cpu-features/src/binding.cc +0 -151
  132. package/node_modules/cpu-features/test/test.js +0 -12
@@ -1,456 +0,0 @@
1
- diff --git a/deps/cpu_features/CMakeLists.txt b/deps/cpu_features/CMakeLists.txt
2
- index bcc9bb0..7a4f641 100644
3
- --- a/deps/cpu_features/CMakeLists.txt
4
- +++ b/deps/cpu_features/CMakeLists.txt
5
- @@ -1,4 +1,4 @@
6
- -cmake_minimum_required(VERSION 3.0)
7
- +cmake_minimum_required(VERSION 3.19.2)
8
-
9
- # option() honors normal variables.
10
- # see: https://cmake.org/cmake/help/git-stage/policy/CMP0077.html
11
- @@ -147,7 +147,7 @@ target_link_libraries(cpu_features PUBLIC ${CMAKE_DL_LIBS})
12
- target_include_directories(cpu_features
13
- PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/cpu_features>
14
- )
15
- -if(PROCESSOR_IS_X86)
16
- +if(PROCESSOR_IS_X86 OR PROCESSOR_IS_AARCH64)
17
- if(APPLE)
18
- target_compile_definitions(cpu_features PRIVATE HAVE_SYSCTLBYNAME)
19
- endif()
20
- diff --git a/deps/cpu_features/include/cpu_features_macros.h b/deps/cpu_features/include/cpu_features_macros.h
21
- index 215b567..652335d 100644
22
- --- a/deps/cpu_features/include/cpu_features_macros.h
23
- +++ b/deps/cpu_features/include/cpu_features_macros.h
24
- @@ -39,7 +39,7 @@
25
- #define CPU_FEATURES_ARCH_ARM
26
- #endif
27
-
28
- -#if (defined(__aarch64__) || defined(_M_ARM64))
29
- +#if (defined(__aarch64__) || defined(__arm64__) || defined(_M_ARM64))
30
- #define CPU_FEATURES_ARCH_AARCH64
31
- #endif
32
-
33
- diff --git a/deps/cpu_features/src/impl_aarch64__base_implementation.inl b/deps/cpu_features/src/impl_aarch64__base_implementation.inl
34
- new file mode 100644
35
- index 0000000..9677a6f
36
- --- /dev/null
37
- +++ b/deps/cpu_features/src/impl_aarch64__base_implementation.inl
38
- @@ -0,0 +1,88 @@
39
- +// Copyright 2021 Google LLC
40
- +//
41
- +// Licensed under the Apache License, Version 2.0 (the "License");
42
- +// you may not use this file except in compliance with the License.
43
- +// You may obtain a copy of the License at
44
- +//
45
- +// http://www.apache.org/licenses/LICENSE-2.0
46
- +//
47
- +// Unless required by applicable law or agreed to in writing, software
48
- +// distributed under the License is distributed on an "AS IS" BASIS,
49
- +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
50
- +// See the License for the specific language governing permissions and
51
- +// limitations under the License.
52
- +
53
- +#include <stdbool.h>
54
- +
55
- +#include "cpuinfo_aarch64.h"
56
- +#include "internal/bit_utils.h"
57
- +#include "internal/filesystem.h"
58
- +#include "internal/stack_line_reader.h"
59
- +#include "internal/string_view.h"
60
- +
61
- +#if !defined(CPU_FEATURES_ARCH_AARCH64)
62
- +#error "Cannot compile aarch64_base on a non aarch64 platform."
63
- +#endif
64
- +
65
- +////////////////////////////////////////////////////////////////////////////////
66
- +// Definitions for introspection.
67
- +////////////////////////////////////////////////////////////////////////////////
68
- +#define INTROSPECTION_TABLE \
69
- + LINE(AARCH64_FP, fp, "fp", AARCH64_HWCAP_FP, 0) \
70
- + LINE(AARCH64_ASIMD, asimd, "asimd", AARCH64_HWCAP_ASIMD, 0) \
71
- + LINE(AARCH64_EVTSTRM, evtstrm, "evtstrm", AARCH64_HWCAP_EVTSTRM, 0) \
72
- + LINE(AARCH64_AES, aes, "aes", AARCH64_HWCAP_AES, 0) \
73
- + LINE(AARCH64_PMULL, pmull, "pmull", AARCH64_HWCAP_PMULL, 0) \
74
- + LINE(AARCH64_SHA1, sha1, "sha1", AARCH64_HWCAP_SHA1, 0) \
75
- + LINE(AARCH64_SHA2, sha2, "sha2", AARCH64_HWCAP_SHA2, 0) \
76
- + LINE(AARCH64_CRC32, crc32, "crc32", AARCH64_HWCAP_CRC32, 0) \
77
- + LINE(AARCH64_ATOMICS, atomics, "atomics", AARCH64_HWCAP_ATOMICS, 0) \
78
- + LINE(AARCH64_FPHP, fphp, "fphp", AARCH64_HWCAP_FPHP, 0) \
79
- + LINE(AARCH64_ASIMDHP, asimdhp, "asimdhp", AARCH64_HWCAP_ASIMDHP, 0) \
80
- + LINE(AARCH64_CPUID, cpuid, "cpuid", AARCH64_HWCAP_CPUID, 0) \
81
- + LINE(AARCH64_ASIMDRDM, asimdrdm, "asimdrdm", AARCH64_HWCAP_ASIMDRDM, 0) \
82
- + LINE(AARCH64_JSCVT, jscvt, "jscvt", AARCH64_HWCAP_JSCVT, 0) \
83
- + LINE(AARCH64_FCMA, fcma, "fcma", AARCH64_HWCAP_FCMA, 0) \
84
- + LINE(AARCH64_LRCPC, lrcpc, "lrcpc", AARCH64_HWCAP_LRCPC, 0) \
85
- + LINE(AARCH64_DCPOP, dcpop, "dcpop", AARCH64_HWCAP_DCPOP, 0) \
86
- + LINE(AARCH64_SHA3, sha3, "sha3", AARCH64_HWCAP_SHA3, 0) \
87
- + LINE(AARCH64_SM3, sm3, "sm3", AARCH64_HWCAP_SM3, 0) \
88
- + LINE(AARCH64_SM4, sm4, "sm4", AARCH64_HWCAP_SM4, 0) \
89
- + LINE(AARCH64_ASIMDDP, asimddp, "asimddp", AARCH64_HWCAP_ASIMDDP, 0) \
90
- + LINE(AARCH64_SHA512, sha512, "sha512", AARCH64_HWCAP_SHA512, 0) \
91
- + LINE(AARCH64_SVE, sve, "sve", AARCH64_HWCAP_SVE, 0) \
92
- + LINE(AARCH64_ASIMDFHM, asimdfhm, "asimdfhm", AARCH64_HWCAP_ASIMDFHM, 0) \
93
- + LINE(AARCH64_DIT, dit, "dit", AARCH64_HWCAP_DIT, 0) \
94
- + LINE(AARCH64_USCAT, uscat, "uscat", AARCH64_HWCAP_USCAT, 0) \
95
- + LINE(AARCH64_ILRCPC, ilrcpc, "ilrcpc", AARCH64_HWCAP_ILRCPC, 0) \
96
- + LINE(AARCH64_FLAGM, flagm, "flagm", AARCH64_HWCAP_FLAGM, 0) \
97
- + LINE(AARCH64_SSBS, ssbs, "ssbs", AARCH64_HWCAP_SSBS, 0) \
98
- + LINE(AARCH64_SB, sb, "sb", AARCH64_HWCAP_SB, 0) \
99
- + LINE(AARCH64_PACA, paca, "paca", AARCH64_HWCAP_PACA, 0) \
100
- + LINE(AARCH64_PACG, pacg, "pacg", AARCH64_HWCAP_PACG, 0) \
101
- + LINE(AARCH64_DCPODP, dcpodp, "dcpodp", 0, AARCH64_HWCAP2_DCPODP) \
102
- + LINE(AARCH64_SVE2, sve2, "sve2", 0, AARCH64_HWCAP2_SVE2) \
103
- + LINE(AARCH64_SVEAES, sveaes, "sveaes", 0, AARCH64_HWCAP2_SVEAES) \
104
- + LINE(AARCH64_SVEPMULL, svepmull, "svepmull", 0, AARCH64_HWCAP2_SVEPMULL) \
105
- + LINE(AARCH64_SVEBITPERM, svebitperm, "svebitperm", 0, \
106
- + AARCH64_HWCAP2_SVEBITPERM) \
107
- + LINE(AARCH64_SVESHA3, svesha3, "svesha3", 0, AARCH64_HWCAP2_SVESHA3) \
108
- + LINE(AARCH64_SVESM4, svesm4, "svesm4", 0, AARCH64_HWCAP2_SVESM4) \
109
- + LINE(AARCH64_FLAGM2, flagm2, "flagm2", 0, AARCH64_HWCAP2_FLAGM2) \
110
- + LINE(AARCH64_FRINT, frint, "frint", 0, AARCH64_HWCAP2_FRINT) \
111
- + LINE(AARCH64_SVEI8MM, svei8mm, "svei8mm", 0, AARCH64_HWCAP2_SVEI8MM) \
112
- + LINE(AARCH64_SVEF32MM, svef32mm, "svef32mm", 0, AARCH64_HWCAP2_SVEF32MM) \
113
- + LINE(AARCH64_SVEF64MM, svef64mm, "svef64mm", 0, AARCH64_HWCAP2_SVEF64MM) \
114
- + LINE(AARCH64_SVEBF16, svebf16, "svebf16", 0, AARCH64_HWCAP2_SVEBF16) \
115
- + LINE(AARCH64_I8MM, i8mm, "i8mm", 0, AARCH64_HWCAP2_I8MM) \
116
- + LINE(AARCH64_BF16, bf16, "bf16", 0, AARCH64_HWCAP2_BF16) \
117
- + LINE(AARCH64_DGH, dgh, "dgh", 0, AARCH64_HWCAP2_DGH) \
118
- + LINE(AARCH64_RNG, rng, "rng", 0, AARCH64_HWCAP2_RNG) \
119
- + LINE(AARCH64_BTI, bti, "bti", 0, AARCH64_HWCAP2_BTI) \
120
- + LINE(AARCH64_MTE, mte, "mte", 0, AARCH64_HWCAP2_MTE) \
121
- + LINE(AARCH64_ECV, ecv, "ecv", 0, AARCH64_HWCAP2_ECV) \
122
- + LINE(AARCH64_AFP, afp, "afp", 0, AARCH64_HWCAP2_AFP) \
123
- + LINE(AARCH64_RPRES, rpres, "rpres", 0, AARCH64_HWCAP2_RPRES)
124
- +#define INTROSPECTION_PREFIX Aarch64
125
- +#define INTROSPECTION_ENUM_PREFIX AARCH64
126
- +#include "define_introspection_and_hwcaps.inl"
127
- diff --git a/deps/cpu_features/src/impl_aarch64_linux_or_android.c b/deps/cpu_features/src/impl_aarch64_linux_or_android.c
128
- index ef923d9..c0a764c 100644
129
- --- a/deps/cpu_features/src/impl_aarch64_linux_or_android.c
130
- +++ b/deps/cpu_features/src/impl_aarch64_linux_or_android.c
131
- @@ -17,81 +17,7 @@
132
- #ifdef CPU_FEATURES_ARCH_AARCH64
133
- #if defined(CPU_FEATURES_OS_LINUX) || defined(CPU_FEATURES_OS_ANDROID)
134
-
135
- -#include "cpuinfo_aarch64.h"
136
- -
137
- -////////////////////////////////////////////////////////////////////////////////
138
- -// Definitions for introspection.
139
- -////////////////////////////////////////////////////////////////////////////////
140
- -#define INTROSPECTION_TABLE \
141
- - LINE(AARCH64_FP, fp, "fp", AARCH64_HWCAP_FP, 0) \
142
- - LINE(AARCH64_ASIMD, asimd, "asimd", AARCH64_HWCAP_ASIMD, 0) \
143
- - LINE(AARCH64_EVTSTRM, evtstrm, "evtstrm", AARCH64_HWCAP_EVTSTRM, 0) \
144
- - LINE(AARCH64_AES, aes, "aes", AARCH64_HWCAP_AES, 0) \
145
- - LINE(AARCH64_PMULL, pmull, "pmull", AARCH64_HWCAP_PMULL, 0) \
146
- - LINE(AARCH64_SHA1, sha1, "sha1", AARCH64_HWCAP_SHA1, 0) \
147
- - LINE(AARCH64_SHA2, sha2, "sha2", AARCH64_HWCAP_SHA2, 0) \
148
- - LINE(AARCH64_CRC32, crc32, "crc32", AARCH64_HWCAP_CRC32, 0) \
149
- - LINE(AARCH64_ATOMICS, atomics, "atomics", AARCH64_HWCAP_ATOMICS, 0) \
150
- - LINE(AARCH64_FPHP, fphp, "fphp", AARCH64_HWCAP_FPHP, 0) \
151
- - LINE(AARCH64_ASIMDHP, asimdhp, "asimdhp", AARCH64_HWCAP_ASIMDHP, 0) \
152
- - LINE(AARCH64_CPUID, cpuid, "cpuid", AARCH64_HWCAP_CPUID, 0) \
153
- - LINE(AARCH64_ASIMDRDM, asimdrdm, "asimdrdm", AARCH64_HWCAP_ASIMDRDM, 0) \
154
- - LINE(AARCH64_JSCVT, jscvt, "jscvt", AARCH64_HWCAP_JSCVT, 0) \
155
- - LINE(AARCH64_FCMA, fcma, "fcma", AARCH64_HWCAP_FCMA, 0) \
156
- - LINE(AARCH64_LRCPC, lrcpc, "lrcpc", AARCH64_HWCAP_LRCPC, 0) \
157
- - LINE(AARCH64_DCPOP, dcpop, "dcpop", AARCH64_HWCAP_DCPOP, 0) \
158
- - LINE(AARCH64_SHA3, sha3, "sha3", AARCH64_HWCAP_SHA3, 0) \
159
- - LINE(AARCH64_SM3, sm3, "sm3", AARCH64_HWCAP_SM3, 0) \
160
- - LINE(AARCH64_SM4, sm4, "sm4", AARCH64_HWCAP_SM4, 0) \
161
- - LINE(AARCH64_ASIMDDP, asimddp, "asimddp", AARCH64_HWCAP_ASIMDDP, 0) \
162
- - LINE(AARCH64_SHA512, sha512, "sha512", AARCH64_HWCAP_SHA512, 0) \
163
- - LINE(AARCH64_SVE, sve, "sve", AARCH64_HWCAP_SVE, 0) \
164
- - LINE(AARCH64_ASIMDFHM, asimdfhm, "asimdfhm", AARCH64_HWCAP_ASIMDFHM, 0) \
165
- - LINE(AARCH64_DIT, dit, "dit", AARCH64_HWCAP_DIT, 0) \
166
- - LINE(AARCH64_USCAT, uscat, "uscat", AARCH64_HWCAP_USCAT, 0) \
167
- - LINE(AARCH64_ILRCPC, ilrcpc, "ilrcpc", AARCH64_HWCAP_ILRCPC, 0) \
168
- - LINE(AARCH64_FLAGM, flagm, "flagm", AARCH64_HWCAP_FLAGM, 0) \
169
- - LINE(AARCH64_SSBS, ssbs, "ssbs", AARCH64_HWCAP_SSBS, 0) \
170
- - LINE(AARCH64_SB, sb, "sb", AARCH64_HWCAP_SB, 0) \
171
- - LINE(AARCH64_PACA, paca, "paca", AARCH64_HWCAP_PACA, 0) \
172
- - LINE(AARCH64_PACG, pacg, "pacg", AARCH64_HWCAP_PACG, 0) \
173
- - LINE(AARCH64_DCPODP, dcpodp, "dcpodp", 0, AARCH64_HWCAP2_DCPODP) \
174
- - LINE(AARCH64_SVE2, sve2, "sve2", 0, AARCH64_HWCAP2_SVE2) \
175
- - LINE(AARCH64_SVEAES, sveaes, "sveaes", 0, AARCH64_HWCAP2_SVEAES) \
176
- - LINE(AARCH64_SVEPMULL, svepmull, "svepmull", 0, AARCH64_HWCAP2_SVEPMULL) \
177
- - LINE(AARCH64_SVEBITPERM, svebitperm, "svebitperm", 0, \
178
- - AARCH64_HWCAP2_SVEBITPERM) \
179
- - LINE(AARCH64_SVESHA3, svesha3, "svesha3", 0, AARCH64_HWCAP2_SVESHA3) \
180
- - LINE(AARCH64_SVESM4, svesm4, "svesm4", 0, AARCH64_HWCAP2_SVESM4) \
181
- - LINE(AARCH64_FLAGM2, flagm2, "flagm2", 0, AARCH64_HWCAP2_FLAGM2) \
182
- - LINE(AARCH64_FRINT, frint, "frint", 0, AARCH64_HWCAP2_FRINT) \
183
- - LINE(AARCH64_SVEI8MM, svei8mm, "svei8mm", 0, AARCH64_HWCAP2_SVEI8MM) \
184
- - LINE(AARCH64_SVEF32MM, svef32mm, "svef32mm", 0, AARCH64_HWCAP2_SVEF32MM) \
185
- - LINE(AARCH64_SVEF64MM, svef64mm, "svef64mm", 0, AARCH64_HWCAP2_SVEF64MM) \
186
- - LINE(AARCH64_SVEBF16, svebf16, "svebf16", 0, AARCH64_HWCAP2_SVEBF16) \
187
- - LINE(AARCH64_I8MM, i8mm, "i8mm", 0, AARCH64_HWCAP2_I8MM) \
188
- - LINE(AARCH64_BF16, bf16, "bf16", 0, AARCH64_HWCAP2_BF16) \
189
- - LINE(AARCH64_DGH, dgh, "dgh", 0, AARCH64_HWCAP2_DGH) \
190
- - LINE(AARCH64_RNG, rng, "rng", 0, AARCH64_HWCAP2_RNG) \
191
- - LINE(AARCH64_BTI, bti, "bti", 0, AARCH64_HWCAP2_BTI) \
192
- - LINE(AARCH64_MTE, mte, "mte", 0, AARCH64_HWCAP2_MTE) \
193
- - LINE(AARCH64_ECV, ecv, "ecv", 0, AARCH64_HWCAP2_ECV) \
194
- - LINE(AARCH64_AFP, afp, "afp", 0, AARCH64_HWCAP2_AFP) \
195
- - LINE(AARCH64_RPRES, rpres, "rpres", 0, AARCH64_HWCAP2_RPRES)
196
- -#define INTROSPECTION_PREFIX Aarch64
197
- -#define INTROSPECTION_ENUM_PREFIX AARCH64
198
- -#include "define_introspection_and_hwcaps.inl"
199
- -
200
- -////////////////////////////////////////////////////////////////////////////////
201
- -// Implementation.
202
- -////////////////////////////////////////////////////////////////////////////////
203
- -
204
- -#include <stdbool.h>
205
- -
206
- -#include "internal/bit_utils.h"
207
- -#include "internal/filesystem.h"
208
- -#include "internal/stack_line_reader.h"
209
- -#include "internal/string_view.h"
210
- +#include "impl_aarch64__base_implementation.inl"
211
-
212
- static bool HandleAarch64Line(const LineResult result,
213
- Aarch64Info* const info) {
214
- diff --git a/deps/cpu_features/src/impl_aarch64_macos_or_iphone.c b/deps/cpu_features/src/impl_aarch64_macos_or_iphone.c
215
- new file mode 100644
216
- index 0000000..0f95058
217
- --- /dev/null
218
- +++ b/deps/cpu_features/src/impl_aarch64_macos_or_iphone.c
219
- @@ -0,0 +1,82 @@
220
- +// Copyright 2021 Google LLC
221
- +//
222
- +// Licensed under the Apache License, Version 2.0 (the "License");
223
- +// you may not use this file except in compliance with the License.
224
- +// You may obtain a copy of the License at
225
- +//
226
- +// http://www.apache.org/licenses/LICENSE-2.0
227
- +//
228
- +// Unless required by applicable law or agreed to in writing, software
229
- +// distributed under the License is distributed on an "AS IS" BASIS,
230
- +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
231
- +// See the License for the specific language governing permissions and
232
- +// limitations under the License.
233
- +
234
- +#include "cpu_features_macros.h"
235
- +
236
- +#ifdef CPU_FEATURES_ARCH_AARCH64
237
- +#if defined(CPU_FEATURES_OS_MACOS) || defined(CPU_FEATURES_OS_IPHONE)
238
- +
239
- +#include "impl_aarch64__base_implementation.inl"
240
- +
241
- +#if !defined(HAVE_SYSCTLBYNAME)
242
- +#error "Darwin needs support for sysctlbyname"
243
- +#endif
244
- +#include <sys/sysctl.h>
245
- +
246
- +#if defined(CPU_FEATURES_MOCK_SYSCTL_AARCH64)
247
- +extern bool GetDarwinSysCtlByName(const char*);
248
- +extern int GetDarwinSysCtlByNameValue(const char* name);
249
- +#else
250
- +static int GetDarwinSysCtlByNameValue(const char* name) {
251
- + int enabled;
252
- + size_t enabled_len = sizeof(enabled);
253
- + const int failure = sysctlbyname(name, &enabled, &enabled_len, NULL, 0);
254
- + return failure ? 0 : enabled;
255
- +}
256
- +
257
- +static bool GetDarwinSysCtlByName(const char* name) {
258
- + return GetDarwinSysCtlByNameValue(name) != 0;
259
- +}
260
- +#endif
261
- +
262
- +static const Aarch64Info kEmptyAarch64Info;
263
- +
264
- +Aarch64Info GetAarch64Info(void) {
265
- + Aarch64Info info = kEmptyAarch64Info;
266
- +
267
- + // Handling Darwin platform through sysctlbyname.
268
- + info.implementer = GetDarwinSysCtlByNameValue("hw.cputype");
269
- + info.variant = GetDarwinSysCtlByNameValue("hw.cpusubtype");
270
- + info.part = GetDarwinSysCtlByNameValue("hw.cpufamily");
271
- + info.revision = GetDarwinSysCtlByNameValue("hw.cpusubfamily");
272
- +
273
- + info.features.fp = GetDarwinSysCtlByName("hw.optional.floatingpoint");
274
- + info.features.asimd = GetDarwinSysCtlByName("hw.optional.AdvSIMD");
275
- + info.features.aes = GetDarwinSysCtlByName("hw.optional.arm.FEAT_AES");
276
- + info.features.pmull = GetDarwinSysCtlByName("hw.optional.arm.FEAT_PMULL");
277
- + info.features.sha1 = GetDarwinSysCtlByName("hw.optional.arm.FEAT_SHA1");
278
- + info.features.sha2 = GetDarwinSysCtlByName("hw.optional.arm.FEAT_SHA2");
279
- + info.features.crc32 = GetDarwinSysCtlByName("hw.optional.armv8_crc32");
280
- + info.features.atomics = GetDarwinSysCtlByName("hw.optional.armv8_1_atomics");
281
- + info.features.fphp = GetDarwinSysCtlByName("hw.optional.neon_hpfp");
282
- + info.features.jscvt = GetDarwinSysCtlByName("hw.optional.arm.FEAT_JSCVT");
283
- + info.features.fcma = GetDarwinSysCtlByName("hw.optional.arm.FEAT_FCMA");
284
- + info.features.lrcpc = GetDarwinSysCtlByName("hw.optional.arm.FEAT_LRCPC");
285
- + info.features.sha3 = GetDarwinSysCtlByName("hw.optional.armv8_2_sha3");
286
- + info.features.sha512 = GetDarwinSysCtlByName("hw.optional.armv8_2_sha512");
287
- + info.features.asimdfhm = GetDarwinSysCtlByName("hw.optional.armv8_2_fhm");
288
- + info.features.flagm = GetDarwinSysCtlByName("hw.optional.arm.FEAT_FLAGM");
289
- + info.features.flagm2 = GetDarwinSysCtlByName("hw.optional.arm.FEAT_FLAGM2");
290
- + info.features.ssbs = GetDarwinSysCtlByName("hw.optional.arm.FEAT_SSBS");
291
- + info.features.sb = GetDarwinSysCtlByName("hw.optional.arm.FEAT_SB");
292
- + info.features.i8mm = GetDarwinSysCtlByName("hw.optional.arm.FEAT_I8MM");
293
- + info.features.bf16 = GetDarwinSysCtlByName("hw.optional.arm.FEAT_BF16");
294
- + info.features.bti = GetDarwinSysCtlByName("hw.optional.arm.FEAT_BTI");
295
- + info.features.ecv = GetDarwinSysCtlByName("hw.optional.arm.FEAT_ECV");
296
- +
297
- + return info;
298
- +}
299
- +
300
- +#endif // defined(CPU_FEATURES_OS_MACOS) || defined(CPU_FEATURES_OS_IPHONE)
301
- +#endif // CPU_FEATURES_ARCH_AARCH64
302
- diff --git a/deps/cpu_features/test/CMakeLists.txt b/deps/cpu_features/test/CMakeLists.txt
303
- index f627d74..80a0466 100644
304
- --- a/deps/cpu_features/test/CMakeLists.txt
305
- +++ b/deps/cpu_features/test/CMakeLists.txt
306
- @@ -74,7 +74,12 @@ if(PROCESSOR_IS_AARCH64)
307
- add_executable(cpuinfo_aarch64_test
308
- cpuinfo_aarch64_test.cc
309
- ../src/impl_aarch64_linux_or_android.c
310
- + ../src/impl_aarch64_macos_or_iphone.c
311
- ../src/impl_aarch64_windows.c)
312
- + if(APPLE)
313
- + target_compile_definitions(cpuinfo_aarch64_test PUBLIC CPU_FEATURES_MOCK_SYSCTL_AARCH64)
314
- + target_compile_definitions(cpuinfo_aarch64_test PRIVATE HAVE_SYSCTLBYNAME)
315
- + endif()
316
- target_compile_definitions(cpuinfo_aarch64_test PUBLIC CPU_FEATURES_MOCK_CPUID_AARCH64)
317
- target_link_libraries(cpuinfo_aarch64_test all_libraries)
318
- add_test(NAME cpuinfo_aarch64_test COMMAND cpuinfo_aarch64_test)
319
- diff --git a/deps/cpu_features/test/cpuinfo_aarch64_test.cc b/deps/cpu_features/test/cpuinfo_aarch64_test.cc
320
- index ef9abae..b43d1aa 100644
321
- --- a/deps/cpu_features/test/cpuinfo_aarch64_test.cc
322
- +++ b/deps/cpu_features/test/cpuinfo_aarch64_test.cc
323
- @@ -96,6 +96,125 @@ TEST(CpuinfoAarch64Test, Aarch64FeaturesEnum) {
324
- #if defined(CPU_FEATURES_OS_LINUX)
325
- void DisableHardwareCapabilities() { SetHardwareCapabilities(0, 0); }
326
-
327
- +#if defined(CPU_FEATURES_OS_MACOS)
328
- +
329
- +class FakeCpu {
330
- + public:
331
- + bool GetDarwinSysCtlByName(std::string name) const {
332
- + return darwin_sysctlbyname_.count(name);
333
- + }
334
- +
335
- + int GetDarwinSysCtlByNameValue(std::string name) const {
336
- + std::map<std::string, int>::const_iterator iter = darwin_sysctlbynamevalue_.find(name);
337
- + if (iter != std::end(darwin_sysctlbynamevalue_)) {
338
- + return iter->second;
339
- + }
340
- +
341
- + return 0;
342
- + }
343
- +
344
- + void SetDarwinSysCtlByName(std::string name) {
345
- + darwin_sysctlbyname_.insert(name);
346
- + }
347
- +
348
- + void SetDarwinSysCtlByNameValue(std::string name, int value) {
349
- + darwin_sysctlbynamevalue_[name] = value;
350
- + }
351
- + private:
352
- + std::set<std::string> darwin_sysctlbyname_;
353
- + std::map<std::string, int> darwin_sysctlbynamevalue_;
354
- +};
355
- +
356
- +static FakeCpu* g_fake_cpu_instance = nullptr;
357
- +
358
- +static FakeCpu& cpu() {
359
- + assert(g_fake_cpu_instance != nullptr);
360
- + return *g_fake_cpu_instance;
361
- +}
362
- +
363
- +extern "C" bool GetDarwinSysCtlByName(const char* name) {
364
- + return cpu().GetDarwinSysCtlByName(name);
365
- +}
366
- +
367
- +extern "C" int GetDarwinSysCtlByNameValue(const char *name) {
368
- + return cpu().GetDarwinSysCtlByNameValue(name);
369
- +}
370
- +
371
- +class CpuinfoAarch64Test : public ::testing::Test {
372
- + protected:
373
- + void SetUp() override {
374
- + assert(g_fake_cpu_instance == nullptr);
375
- + g_fake_cpu_instance = new FakeCpu();
376
- + }
377
- + void TearDown() override {
378
- + delete g_fake_cpu_instance;
379
- + g_fake_cpu_instance = nullptr;
380
- + }
381
- +};
382
- +
383
- +TEST_F(CpuinfoAarch64Test, FromDarwinSysctlFromName) {
384
- + cpu().SetDarwinSysCtlByName("hw.optional.floatingpoint");
385
- + cpu().SetDarwinSysCtlByName("hw.optional.neon");
386
- + cpu().SetDarwinSysCtlByName("hw.optional.neon_hpfp");
387
- + cpu().SetDarwinSysCtlByName("hw.optional.neon_fp16");
388
- + cpu().SetDarwinSysCtlByName("hw.optional.armv8_1_atomics");
389
- + cpu().SetDarwinSysCtlByName("hw.optional.armv8_crc32");
390
- + cpu().SetDarwinSysCtlByName("hw.optional.armv8_2_fhm");
391
- + cpu().SetDarwinSysCtlByName("hw.optional.armv8_2_sha512");
392
- + cpu().SetDarwinSysCtlByName("hw.optional.armv8_2_sha3");
393
- + cpu().SetDarwinSysCtlByName("hw.optional.amx_version");
394
- + cpu().SetDarwinSysCtlByName("hw.optional.ucnormal_mem");
395
- + cpu().SetDarwinSysCtlByName("hw.optional.arm64");
396
- +
397
- + cpu().SetDarwinSysCtlByNameValue("hw.cputype", 16777228);
398
- + cpu().SetDarwinSysCtlByNameValue("hw.cpusubtype", 2);
399
- + cpu().SetDarwinSysCtlByNameValue("hw.cpu64bit", 1);
400
- + cpu().SetDarwinSysCtlByNameValue("hw.cpufamily", 458787763);
401
- + cpu().SetDarwinSysCtlByNameValue("hw.cpusubfamily", 2);
402
- +
403
- + const auto info = GetAarch64Info();
404
- +
405
- + EXPECT_EQ(info.implementer, 0x100000C);
406
- + EXPECT_EQ(info.variant, 2);
407
- + EXPECT_EQ(info.part, 0x1B588BB3);
408
- + EXPECT_EQ(info.revision, 2);
409
- +
410
- + EXPECT_TRUE(info.features.fp);
411
- + EXPECT_FALSE(info.features.asimd);
412
- + EXPECT_FALSE(info.features.evtstrm);
413
- + EXPECT_FALSE(info.features.aes);
414
- + EXPECT_FALSE(info.features.pmull);
415
- + EXPECT_FALSE(info.features.sha1);
416
- + EXPECT_FALSE(info.features.sha2);
417
- + EXPECT_TRUE(info.features.crc32);
418
- + EXPECT_TRUE(info.features.atomics);
419
- + EXPECT_TRUE(info.features.fphp);
420
- + EXPECT_FALSE(info.features.asimdhp);
421
- + EXPECT_FALSE(info.features.cpuid);
422
- + EXPECT_FALSE(info.features.asimdrdm);
423
- + EXPECT_FALSE(info.features.jscvt);
424
- + EXPECT_FALSE(info.features.fcma);
425
- + EXPECT_FALSE(info.features.lrcpc);
426
- + EXPECT_FALSE(info.features.dcpop);
427
- + EXPECT_TRUE(info.features.sha3);
428
- + EXPECT_FALSE(info.features.sm3);
429
- + EXPECT_FALSE(info.features.sm4);
430
- + EXPECT_FALSE(info.features.asimddp);
431
- + EXPECT_TRUE(info.features.sha512);
432
- + EXPECT_FALSE(info.features.sve);
433
- + EXPECT_TRUE(info.features.asimdfhm);
434
- + EXPECT_FALSE(info.features.dit);
435
- + EXPECT_FALSE(info.features.uscat);
436
- + EXPECT_FALSE(info.features.ilrcpc);
437
- + EXPECT_FALSE(info.features.flagm);
438
- + EXPECT_FALSE(info.features.ssbs);
439
- + EXPECT_FALSE(info.features.sb);
440
- + EXPECT_FALSE(info.features.paca);
441
- + EXPECT_FALSE(info.features.pacg);
442
- +}
443
- +
444
- +#else
445
- +
446
- TEST(CpuinfoAarch64Test, FromHardwareCap) {
447
- ResetHwcaps();
448
- SetHardwareCapabilities(AARCH64_HWCAP_FP | AARCH64_HWCAP_AES, 0);
449
- @@ -163,6 +282,7 @@ TEST(CpuinfoAarch64Test, FromHardwareCap2) {
450
- EXPECT_FALSE(info.features.dgh);
451
- EXPECT_FALSE(info.features.rng);
452
- }
453
- +#endif // CPU_FEATURES_OS_MACOS
454
-
455
- TEST(CpuinfoAarch64Test, ARMCortexA53) {
456
- ResetHwcaps();
@@ -1,165 +0,0 @@
1
- import std.algorithm : each, map, cartesianProduct, filter, joiner, sort, uniq;
2
- import std.array : array;
3
- import std.conv : to;
4
- import std.format;
5
- import std.range : chain, only;
6
- import std.stdio;
7
- import std.traits : EnumMembers;
8
-
9
- enum BuildSystem
10
- {
11
- CMake,
12
- Bazel
13
- }
14
-
15
- enum Cpu
16
- {
17
- amd64,
18
- AArch64,
19
- ARM,
20
- MIPS,
21
- POWER,
22
- RISCV,
23
- s390x,
24
- }
25
-
26
- enum Os
27
- {
28
- Linux,
29
- FreeBSD,
30
- MacOS,
31
- Windows,
32
- }
33
-
34
- struct Badge
35
- {
36
- const:
37
-
38
- Cpu cpu;
39
- Os os;
40
- BuildSystem build_system;
41
-
42
- string id()
43
- {
44
- return format("%d%c%d", cast(uint)(os) + 1, cast(char)('a' + cpu), cast(uint)(build_system));
45
- }
46
-
47
- string disabled_image_ref()
48
- {
49
- return format("[d%d]", cast(uint)(build_system));
50
- }
51
-
52
- string link_ref()
53
- {
54
- return format("[l%s]", id());
55
- }
56
-
57
- string image_ref()
58
- {
59
- return format("[i%s]", id());
60
- }
61
-
62
- bool enabled()
63
- {
64
- final switch (build_system)
65
- {
66
- case BuildSystem.CMake:
67
- return os == Os.Linux || cpu == Cpu.amd64;
68
- case BuildSystem.Bazel:
69
- return os == Os.Linux && cpu == Cpu.amd64;
70
- }
71
- }
72
-
73
- string text()
74
- {
75
- if (enabled())
76
- return format("[![]%s]%s", image_ref, link_ref);
77
- return format("![]%s", disabled_image_ref);
78
- }
79
-
80
- string disabled_image_link()
81
- {
82
- return format("%s: https://img.shields.io/badge/%s-N%%2FA-lightgrey", disabled_image_ref, build_system);
83
- }
84
-
85
- string filename()
86
- {
87
- import std.uni : toLower;
88
-
89
- return toLower(format("%s_%s_%s.yml", cpu, os, build_system));
90
- }
91
-
92
- string link_decl()
93
- {
94
- return format("%s: https://github.com/google/cpu_features/actions/workflows/%s", link_ref, filename());
95
- }
96
-
97
- string image_decl()
98
- {
99
- return format(
100
- "%s: https://img.shields.io/github/actions/workflow/status/google/cpu_features/%s?branch=main&label=%s", image_ref, filename(), build_system);
101
- }
102
- }
103
-
104
- auto tableHeader(in Cpu[] cpus)
105
- {
106
- return chain(only("Os"), cpus.map!(to!string)).array;
107
- }
108
-
109
- auto tableAlignment(in Cpu[] cpus)
110
- {
111
- return chain(only(":--"), cpus.map!(v => "--:")).array;
112
- }
113
-
114
- auto tableCell(Range)(in Os os, in Cpu cpu, Range badges)
115
- {
116
- return badges
117
- .filter!(b => b.cpu == cpu && b.os == os)
118
- .map!(b => b.text())
119
- .joiner("<br/>")
120
- .to!string;
121
- }
122
-
123
- auto tableRow(Range)(in Os os, in Cpu[] cpus, Range badges)
124
- {
125
- return chain(only(os.to!string), cpus.map!(cpu => tableCell(os, cpu, badges))).array;
126
- }
127
-
128
- auto tableRows(Range)(in Os[] oses, in Cpu[] cpus, Range badges)
129
- {
130
- return oses.map!(os => tableRow(os, cpus, badges)).array;
131
- }
132
-
133
- auto table(Range)(in Os[] oses, in Cpu[] cpus, Range badges)
134
- {
135
- return chain(only(tableHeader(cpus)), only(tableAlignment(cpus)), tableRows(oses, cpus, badges));
136
- }
137
-
138
- void main()
139
- {
140
- immutable allCpus = [EnumMembers!Cpu];
141
- immutable allOses = [EnumMembers!Os];
142
- immutable allBuildSystems = [EnumMembers!BuildSystem];
143
-
144
- auto badges = cartesianProduct(allCpus, allOses, allBuildSystems).map!(
145
- t => Badge(t[0], t[1], t[2]));
146
-
147
- writefln("%(|%-( %s |%) |\n%) |", table(allOses, allCpus, badges));
148
- writeln();
149
- badges
150
- .filter!(b => !b.enabled)
151
- .map!(b => b.disabled_image_link())
152
- .array
153
- .sort
154
- .uniq
155
- .each!writeln;
156
-
157
- badges
158
- .filter!(b => b.enabled)
159
- .map!(b => [b.link_decl(), b.image_decl()])
160
- .joiner()
161
- .array
162
- .sort
163
- .uniq
164
- .each!writeln;
165
- }