Initial commit
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+5
@@ -0,0 +1,5 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
extends: '@mscdex/eslint-config',
|
||||
};
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches: [ master ]
|
||||
|
||||
jobs:
|
||||
tests-linux:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node-version: [10.x, 12.x, 14.x, 16.x, 18.x, 20.x, 22.x]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: Check Node.js version
|
||||
run: node -pe process.versions
|
||||
- name: Install module
|
||||
run: npm install
|
||||
- name: Run tests
|
||||
run: npm test
|
||||
tests-macos:
|
||||
runs-on: macos-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node-version: [16.x, 18.x, 20.x, 22.x]
|
||||
env:
|
||||
PIP_DISABLE_PIP_VERSION_CHECK: 1
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: Install Python 3.10
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.10'
|
||||
- name: Check Node.js version
|
||||
run: node -pe process.versions
|
||||
- name: Install module
|
||||
run: npm install
|
||||
- name: Run tests
|
||||
run: npm test
|
||||
tests-windows:
|
||||
runs-on: windows-2019
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node-version: [10.x, 12.x, 14.x, 16.x, 18.x, 20.x, 22.x]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: Check Node.js version
|
||||
run: node -pe process.versions
|
||||
- name: Install module
|
||||
run: npm install
|
||||
- name: Run tests
|
||||
run: npm test
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
name: lint
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches: [ master ]
|
||||
|
||||
env:
|
||||
NODE_VERSION: 20.x
|
||||
|
||||
jobs:
|
||||
lint-js:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Use Node.js ${{ env.NODE_VERSION }}
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
- name: Check Node.js version
|
||||
run: node -pe process.versions
|
||||
- name: Install ESLint + ESLint configs/plugins
|
||||
run: npm install
|
||||
- name: Lint files
|
||||
run: npm run lint
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
Copyright Brian White. All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
deal in the Software without restriction, including without limitation the
|
||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
sell copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
A simple [node.js](https://nodejs.org) binding to [cpu_features](https://github.com/google/cpu_features) for obtaining information about installed CPU(s).
|
||||
|
||||
|
||||
Requirements
|
||||
============
|
||||
|
||||
* [node.js](http://nodejs.org/) -- v10.0.0 or newer
|
||||
* An appropriate build environment -- see [node-gyp's documentation](https://github.com/nodejs/node-gyp/blob/master/README.md)
|
||||
|
||||
|
||||
Install
|
||||
=======
|
||||
|
||||
npm install cpu-features
|
||||
|
||||
|
||||
Example
|
||||
=======
|
||||
|
||||
```js
|
||||
// Generally it's a good idea to just call this once and
|
||||
// reuse the result since `cpu-features` does not cache
|
||||
// the result itself.
|
||||
const features = require('cpu-features')();
|
||||
|
||||
console.log(features);
|
||||
// example output:
|
||||
// { arch: 'x86',
|
||||
// brand: 'Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz',
|
||||
// family: 6,
|
||||
// model: 58,
|
||||
// stepping: 9,
|
||||
// uarch: 'INTEL_IVB',
|
||||
// flags:
|
||||
// { fpu: true,
|
||||
// tsc: true,
|
||||
// cx8: true,
|
||||
// clfsh: true,
|
||||
// mmx: true,
|
||||
// aes: true,
|
||||
// erms: true,
|
||||
// f16c: true,
|
||||
// sse: true,
|
||||
// sse2: true,
|
||||
// sse3: true,
|
||||
// ssse3: true,
|
||||
// sse4_1: true,
|
||||
// sse4_2: true,
|
||||
// avx: true,
|
||||
// pclmulqdq: true,
|
||||
// cx16: true,
|
||||
// popcnt: true,
|
||||
// rdrnd: true,
|
||||
// ss: true } }
|
||||
```
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
{
|
||||
'targets': [
|
||||
{
|
||||
'target_name': 'cpufeatures',
|
||||
'dependencies': [ 'deps/cpu_features/cpu_features.gyp:cpu_features' ],
|
||||
'include_dirs': [
|
||||
'src',
|
||||
"<!(node -e \"require('nan')\")",
|
||||
],
|
||||
'sources': [
|
||||
'src/binding.cc'
|
||||
],
|
||||
'cflags': [ '-O3' ],
|
||||
},
|
||||
],
|
||||
}
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+11
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<ProjectOutputs>
|
||||
<ProjectOutput>
|
||||
<FullPath>C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\Release\cpufeatures.node</FullPath>
|
||||
</ProjectOutput>
|
||||
</ProjectOutputs>
|
||||
<ContentFiles />
|
||||
<SatelliteDlls />
|
||||
<NonRecipeFileRefs />
|
||||
</Project>
|
||||
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
C:\Users\dimir\ssh-updater\node_modules\cpu-features\src\binding.cc;C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\Release\obj\cpufeatures\src\binding.obj
|
||||
C:\Users\dimir\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\src\win_delay_load_hook.cc;C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\Release\obj\cpufeatures\win_delay_load_hook.obj
|
||||
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.44.35207:TargetPlatformVersion=10.0.26100.0:
|
||||
Release|x64|C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\|
|
||||
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
^C:\USERS\DIMIR\SSH-UPDATER\NODE_MODULES\CPU-FEATURES\BUILD\RELEASE\CPU_FEATURES.LIB|C:\USERS\DIMIR\SSH-UPDATER\NODE_MODULES\CPU-FEATURES\BUILD\RELEASE\OBJ\CPUFEATURES\SRC\BINDING.OBJ|C:\USERS\DIMIR\SSH-UPDATER\NODE_MODULES\CPU-FEATURES\BUILD\RELEASE\OBJ\CPUFEATURES\WIN_DELAY_LOAD_HOOK.OBJ
|
||||
C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\Release\cpufeatures.IPDB
|
||||
C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\Release\cpufeatures.IOBJ
|
||||
Generated
Vendored
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+33
@@ -0,0 +1,33 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2015
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpufeatures", "cpufeatures.vcxproj", "{E9636B9B-68D9-3944-2CA4-E82FBED9C67D}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{78207788-485E-5C1C-EBBB-C9E475C84D8E} = {78207788-485E-5C1C-EBBB-C9E475C84D8E}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpu_features", "deps\cpu_features\cpu_features.vcxproj", "{78207788-485E-5C1C-EBBB-C9E475C84D8E}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "(deps)", "..\deps", "{9D1E84F5-10E2-1E2A-A251-3C0D26F77050}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Release|x64 = Release|x64
|
||||
Debug|x64 = Debug|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{78207788-485E-5C1C-EBBB-C9E475C84D8E}.Release|x64.ActiveCfg = Release|x64
|
||||
{78207788-485E-5C1C-EBBB-C9E475C84D8E}.Release|x64.Build.0 = Release|x64
|
||||
{78207788-485E-5C1C-EBBB-C9E475C84D8E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{78207788-485E-5C1C-EBBB-C9E475C84D8E}.Debug|x64.Build.0 = Debug|x64
|
||||
{E9636B9B-68D9-3944-2CA4-E82FBED9C67D}.Release|x64.ActiveCfg = Release|x64
|
||||
{E9636B9B-68D9-3944-2CA4-E82FBED9C67D}.Release|x64.Build.0 = Release|x64
|
||||
{E9636B9B-68D9-3944-2CA4-E82FBED9C67D}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{E9636B9B-68D9-3944-2CA4-E82FBED9C67D}.Debug|x64.Build.0 = Debug|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{78207788-485E-5C1C-EBBB-C9E475C84D8E} = {9D1E84F5-10E2-1E2A-A251-3C0D26F77050}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
+526
@@ -0,0 +1,526 @@
|
||||
# Do not edit. File was generated by node-gyp's "configure" step
|
||||
{
|
||||
"target_defaults": {
|
||||
"cflags": [],
|
||||
"configurations": {
|
||||
"Debug": {
|
||||
"v8_enable_v8_checks": 0,
|
||||
"variables": {}
|
||||
},
|
||||
"Release": {
|
||||
"v8_enable_v8_checks": 1,
|
||||
"variables": {}
|
||||
}
|
||||
},
|
||||
"default_configuration": "Release",
|
||||
"defines": [],
|
||||
"include_dirs": [],
|
||||
"libraries": [],
|
||||
"msbuild_toolset": "v143",
|
||||
"msvs_windows_target_platform_version": "10.0.26100.0"
|
||||
},
|
||||
"variables": {
|
||||
"asan": 0,
|
||||
"clang": 0,
|
||||
"control_flow_guard": "false",
|
||||
"coverage": "false",
|
||||
"dcheck_always_on": 0,
|
||||
"debug_nghttp2": "false",
|
||||
"debug_node": "false",
|
||||
"enable_lto": "false",
|
||||
"enable_pgo_generate": "false",
|
||||
"enable_pgo_use": "false",
|
||||
"error_on_warn": "false",
|
||||
"force_dynamic_crt": 0,
|
||||
"host_arch": "x64",
|
||||
"icu_data_in": "..\\..\\deps\\icu-tmp\\icudt77l.dat",
|
||||
"icu_endianness": "l",
|
||||
"icu_gyp_path": "tools/icu/icu-generic.gyp",
|
||||
"icu_path": "deps/icu-small",
|
||||
"icu_small": "false",
|
||||
"icu_ver_major": "77",
|
||||
"libdir": "lib",
|
||||
"llvm_version": "19.1.5",
|
||||
"napi_build_version": "10",
|
||||
"nasm_version": "3.01",
|
||||
"node_builtin_shareable_builtins": [
|
||||
"deps/cjs-module-lexer/lexer.js",
|
||||
"deps/cjs-module-lexer/dist/lexer.js",
|
||||
"deps/undici/undici.js",
|
||||
"deps/amaro/dist/index.js"
|
||||
],
|
||||
"node_byteorder": "little",
|
||||
"node_cctest_sources": [
|
||||
"src/node_snapshot_stub.cc",
|
||||
"test/cctest/inspector/test_network_requests_buffer.cc",
|
||||
"test/cctest/inspector/test_node_protocol.cc",
|
||||
"test/cctest/node_test_fixture.cc",
|
||||
"test/cctest/test_aliased_buffer.cc",
|
||||
"test/cctest/test_base64.cc",
|
||||
"test/cctest/test_base_object_ptr.cc",
|
||||
"test/cctest/test_cppgc.cc",
|
||||
"test/cctest/test_crypto_clienthello.cc",
|
||||
"test/cctest/test_dataqueue.cc",
|
||||
"test/cctest/test_environment.cc",
|
||||
"test/cctest/test_inspector_socket.cc",
|
||||
"test/cctest/test_inspector_socket_server.cc",
|
||||
"test/cctest/test_json_utils.cc",
|
||||
"test/cctest/test_linked_binding.cc",
|
||||
"test/cctest/test_lru_cache.cc",
|
||||
"test/cctest/test_node_api.cc",
|
||||
"test/cctest/test_node_crypto.cc",
|
||||
"test/cctest/test_node_crypto_env.cc",
|
||||
"test/cctest/test_node_postmortem_metadata.cc",
|
||||
"test/cctest/test_node_task_runner.cc",
|
||||
"test/cctest/test_path.cc",
|
||||
"test/cctest/test_per_process.cc",
|
||||
"test/cctest/test_platform.cc",
|
||||
"test/cctest/test_quic_cid.cc",
|
||||
"test/cctest/test_quic_error.cc",
|
||||
"test/cctest/test_quic_tokens.cc",
|
||||
"test/cctest/test_report.cc",
|
||||
"test/cctest/test_sockaddr.cc",
|
||||
"test/cctest/test_string_bytes.cc",
|
||||
"test/cctest/test_traced_value.cc",
|
||||
"test/cctest/test_util.cc",
|
||||
"test/cctest/node_test_fixture.h"
|
||||
],
|
||||
"node_debug_lib": "false",
|
||||
"node_enable_d8": "false",
|
||||
"node_enable_v8_vtunejit": "false",
|
||||
"node_enable_v8windbg": "false",
|
||||
"node_fipsinstall": "false",
|
||||
"node_install_corepack": "true",
|
||||
"node_install_npm": "true",
|
||||
"node_library_files": [
|
||||
"lib/_http_agent.js",
|
||||
"lib/_http_client.js",
|
||||
"lib/_http_common.js",
|
||||
"lib/_http_incoming.js",
|
||||
"lib/_http_outgoing.js",
|
||||
"lib/_http_server.js",
|
||||
"lib/_stream_duplex.js",
|
||||
"lib/_stream_passthrough.js",
|
||||
"lib/_stream_readable.js",
|
||||
"lib/_stream_transform.js",
|
||||
"lib/_stream_wrap.js",
|
||||
"lib/_stream_writable.js",
|
||||
"lib/_tls_common.js",
|
||||
"lib/_tls_wrap.js",
|
||||
"lib/assert.js",
|
||||
"lib/assert/strict.js",
|
||||
"lib/async_hooks.js",
|
||||
"lib/buffer.js",
|
||||
"lib/child_process.js",
|
||||
"lib/cluster.js",
|
||||
"lib/console.js",
|
||||
"lib/constants.js",
|
||||
"lib/crypto.js",
|
||||
"lib/dgram.js",
|
||||
"lib/diagnostics_channel.js",
|
||||
"lib/dns.js",
|
||||
"lib/dns/promises.js",
|
||||
"lib/domain.js",
|
||||
"lib/events.js",
|
||||
"lib/fs.js",
|
||||
"lib/fs/promises.js",
|
||||
"lib/http.js",
|
||||
"lib/http2.js",
|
||||
"lib/https.js",
|
||||
"lib/inspector.js",
|
||||
"lib/inspector/promises.js",
|
||||
"lib/internal/abort_controller.js",
|
||||
"lib/internal/assert.js",
|
||||
"lib/internal/assert/assertion_error.js",
|
||||
"lib/internal/assert/calltracker.js",
|
||||
"lib/internal/assert/myers_diff.js",
|
||||
"lib/internal/assert/utils.js",
|
||||
"lib/internal/async_context_frame.js",
|
||||
"lib/internal/async_hooks.js",
|
||||
"lib/internal/async_local_storage/async_context_frame.js",
|
||||
"lib/internal/async_local_storage/async_hooks.js",
|
||||
"lib/internal/blob.js",
|
||||
"lib/internal/blocklist.js",
|
||||
"lib/internal/bootstrap/node.js",
|
||||
"lib/internal/bootstrap/realm.js",
|
||||
"lib/internal/bootstrap/shadow_realm.js",
|
||||
"lib/internal/bootstrap/switches/does_not_own_process_state.js",
|
||||
"lib/internal/bootstrap/switches/does_own_process_state.js",
|
||||
"lib/internal/bootstrap/switches/is_main_thread.js",
|
||||
"lib/internal/bootstrap/switches/is_not_main_thread.js",
|
||||
"lib/internal/bootstrap/web/exposed-wildcard.js",
|
||||
"lib/internal/bootstrap/web/exposed-window-or-worker.js",
|
||||
"lib/internal/buffer.js",
|
||||
"lib/internal/child_process.js",
|
||||
"lib/internal/child_process/serialization.js",
|
||||
"lib/internal/cli_table.js",
|
||||
"lib/internal/cluster/child.js",
|
||||
"lib/internal/cluster/primary.js",
|
||||
"lib/internal/cluster/round_robin_handle.js",
|
||||
"lib/internal/cluster/shared_handle.js",
|
||||
"lib/internal/cluster/utils.js",
|
||||
"lib/internal/cluster/worker.js",
|
||||
"lib/internal/console/constructor.js",
|
||||
"lib/internal/console/global.js",
|
||||
"lib/internal/constants.js",
|
||||
"lib/internal/crypto/aes.js",
|
||||
"lib/internal/crypto/argon2.js",
|
||||
"lib/internal/crypto/certificate.js",
|
||||
"lib/internal/crypto/cfrg.js",
|
||||
"lib/internal/crypto/chacha20_poly1305.js",
|
||||
"lib/internal/crypto/cipher.js",
|
||||
"lib/internal/crypto/diffiehellman.js",
|
||||
"lib/internal/crypto/ec.js",
|
||||
"lib/internal/crypto/hash.js",
|
||||
"lib/internal/crypto/hashnames.js",
|
||||
"lib/internal/crypto/hkdf.js",
|
||||
"lib/internal/crypto/kem.js",
|
||||
"lib/internal/crypto/keygen.js",
|
||||
"lib/internal/crypto/keys.js",
|
||||
"lib/internal/crypto/mac.js",
|
||||
"lib/internal/crypto/ml_dsa.js",
|
||||
"lib/internal/crypto/ml_kem.js",
|
||||
"lib/internal/crypto/pbkdf2.js",
|
||||
"lib/internal/crypto/random.js",
|
||||
"lib/internal/crypto/rsa.js",
|
||||
"lib/internal/crypto/scrypt.js",
|
||||
"lib/internal/crypto/sig.js",
|
||||
"lib/internal/crypto/util.js",
|
||||
"lib/internal/crypto/webcrypto.js",
|
||||
"lib/internal/crypto/webidl.js",
|
||||
"lib/internal/crypto/x509.js",
|
||||
"lib/internal/data_url.js",
|
||||
"lib/internal/debugger/inspect.js",
|
||||
"lib/internal/debugger/inspect_client.js",
|
||||
"lib/internal/debugger/inspect_repl.js",
|
||||
"lib/internal/dgram.js",
|
||||
"lib/internal/dns/callback_resolver.js",
|
||||
"lib/internal/dns/promises.js",
|
||||
"lib/internal/dns/utils.js",
|
||||
"lib/internal/encoding.js",
|
||||
"lib/internal/error_serdes.js",
|
||||
"lib/internal/errors.js",
|
||||
"lib/internal/errors/error_source.js",
|
||||
"lib/internal/event_target.js",
|
||||
"lib/internal/events/abort_listener.js",
|
||||
"lib/internal/events/symbols.js",
|
||||
"lib/internal/file.js",
|
||||
"lib/internal/fixed_queue.js",
|
||||
"lib/internal/freelist.js",
|
||||
"lib/internal/freeze_intrinsics.js",
|
||||
"lib/internal/fs/cp/cp-sync.js",
|
||||
"lib/internal/fs/cp/cp.js",
|
||||
"lib/internal/fs/dir.js",
|
||||
"lib/internal/fs/glob.js",
|
||||
"lib/internal/fs/promises.js",
|
||||
"lib/internal/fs/read/context.js",
|
||||
"lib/internal/fs/recursive_watch.js",
|
||||
"lib/internal/fs/rimraf.js",
|
||||
"lib/internal/fs/streams.js",
|
||||
"lib/internal/fs/sync_write_stream.js",
|
||||
"lib/internal/fs/utils.js",
|
||||
"lib/internal/fs/watchers.js",
|
||||
"lib/internal/heap_utils.js",
|
||||
"lib/internal/histogram.js",
|
||||
"lib/internal/http.js",
|
||||
"lib/internal/http2/compat.js",
|
||||
"lib/internal/http2/core.js",
|
||||
"lib/internal/http2/util.js",
|
||||
"lib/internal/inspector/network.js",
|
||||
"lib/internal/inspector/network_http.js",
|
||||
"lib/internal/inspector/network_http2.js",
|
||||
"lib/internal/inspector/network_resources.js",
|
||||
"lib/internal/inspector/network_undici.js",
|
||||
"lib/internal/inspector_async_hook.js",
|
||||
"lib/internal/inspector_network_tracking.js",
|
||||
"lib/internal/js_stream_socket.js",
|
||||
"lib/internal/legacy/processbinding.js",
|
||||
"lib/internal/linkedlist.js",
|
||||
"lib/internal/locks.js",
|
||||
"lib/internal/main/check_syntax.js",
|
||||
"lib/internal/main/embedding.js",
|
||||
"lib/internal/main/eval_stdin.js",
|
||||
"lib/internal/main/eval_string.js",
|
||||
"lib/internal/main/inspect.js",
|
||||
"lib/internal/main/mksnapshot.js",
|
||||
"lib/internal/main/print_help.js",
|
||||
"lib/internal/main/prof_process.js",
|
||||
"lib/internal/main/repl.js",
|
||||
"lib/internal/main/run_main_module.js",
|
||||
"lib/internal/main/test_runner.js",
|
||||
"lib/internal/main/watch_mode.js",
|
||||
"lib/internal/main/worker_thread.js",
|
||||
"lib/internal/mime.js",
|
||||
"lib/internal/modules/cjs/loader.js",
|
||||
"lib/internal/modules/customization_hooks.js",
|
||||
"lib/internal/modules/esm/assert.js",
|
||||
"lib/internal/modules/esm/create_dynamic_module.js",
|
||||
"lib/internal/modules/esm/formats.js",
|
||||
"lib/internal/modules/esm/get_format.js",
|
||||
"lib/internal/modules/esm/hooks.js",
|
||||
"lib/internal/modules/esm/initialize_import_meta.js",
|
||||
"lib/internal/modules/esm/load.js",
|
||||
"lib/internal/modules/esm/loader.js",
|
||||
"lib/internal/modules/esm/module_job.js",
|
||||
"lib/internal/modules/esm/module_map.js",
|
||||
"lib/internal/modules/esm/resolve.js",
|
||||
"lib/internal/modules/esm/shared_constants.js",
|
||||
"lib/internal/modules/esm/translators.js",
|
||||
"lib/internal/modules/esm/utils.js",
|
||||
"lib/internal/modules/esm/worker.js",
|
||||
"lib/internal/modules/helpers.js",
|
||||
"lib/internal/modules/package_json_reader.js",
|
||||
"lib/internal/modules/run_main.js",
|
||||
"lib/internal/modules/typescript.js",
|
||||
"lib/internal/navigator.js",
|
||||
"lib/internal/net.js",
|
||||
"lib/internal/options.js",
|
||||
"lib/internal/per_context/domexception.js",
|
||||
"lib/internal/per_context/messageport.js",
|
||||
"lib/internal/per_context/primordials.js",
|
||||
"lib/internal/perf/event_loop_delay.js",
|
||||
"lib/internal/perf/event_loop_utilization.js",
|
||||
"lib/internal/perf/nodetiming.js",
|
||||
"lib/internal/perf/observe.js",
|
||||
"lib/internal/perf/performance.js",
|
||||
"lib/internal/perf/performance_entry.js",
|
||||
"lib/internal/perf/resource_timing.js",
|
||||
"lib/internal/perf/timerify.js",
|
||||
"lib/internal/perf/usertiming.js",
|
||||
"lib/internal/perf/utils.js",
|
||||
"lib/internal/priority_queue.js",
|
||||
"lib/internal/process/execution.js",
|
||||
"lib/internal/process/finalization.js",
|
||||
"lib/internal/process/per_thread.js",
|
||||
"lib/internal/process/permission.js",
|
||||
"lib/internal/process/pre_execution.js",
|
||||
"lib/internal/process/promises.js",
|
||||
"lib/internal/process/report.js",
|
||||
"lib/internal/process/signal.js",
|
||||
"lib/internal/process/task_queues.js",
|
||||
"lib/internal/process/warning.js",
|
||||
"lib/internal/process/worker_thread_only.js",
|
||||
"lib/internal/promise_hooks.js",
|
||||
"lib/internal/querystring.js",
|
||||
"lib/internal/quic/quic.js",
|
||||
"lib/internal/quic/state.js",
|
||||
"lib/internal/quic/stats.js",
|
||||
"lib/internal/quic/symbols.js",
|
||||
"lib/internal/readline/callbacks.js",
|
||||
"lib/internal/readline/emitKeypressEvents.js",
|
||||
"lib/internal/readline/interface.js",
|
||||
"lib/internal/readline/promises.js",
|
||||
"lib/internal/readline/utils.js",
|
||||
"lib/internal/repl.js",
|
||||
"lib/internal/repl/await.js",
|
||||
"lib/internal/repl/history.js",
|
||||
"lib/internal/repl/utils.js",
|
||||
"lib/internal/socket_list.js",
|
||||
"lib/internal/socketaddress.js",
|
||||
"lib/internal/source_map/prepare_stack_trace.js",
|
||||
"lib/internal/source_map/source_map.js",
|
||||
"lib/internal/source_map/source_map_cache.js",
|
||||
"lib/internal/source_map/source_map_cache_map.js",
|
||||
"lib/internal/stream_base_commons.js",
|
||||
"lib/internal/streams/add-abort-signal.js",
|
||||
"lib/internal/streams/compose.js",
|
||||
"lib/internal/streams/destroy.js",
|
||||
"lib/internal/streams/duplex.js",
|
||||
"lib/internal/streams/duplexify.js",
|
||||
"lib/internal/streams/duplexpair.js",
|
||||
"lib/internal/streams/end-of-stream.js",
|
||||
"lib/internal/streams/fast-utf8-stream.js",
|
||||
"lib/internal/streams/from.js",
|
||||
"lib/internal/streams/lazy_transform.js",
|
||||
"lib/internal/streams/legacy.js",
|
||||
"lib/internal/streams/operators.js",
|
||||
"lib/internal/streams/passthrough.js",
|
||||
"lib/internal/streams/pipeline.js",
|
||||
"lib/internal/streams/readable.js",
|
||||
"lib/internal/streams/state.js",
|
||||
"lib/internal/streams/transform.js",
|
||||
"lib/internal/streams/utils.js",
|
||||
"lib/internal/streams/writable.js",
|
||||
"lib/internal/test/binding.js",
|
||||
"lib/internal/test/transfer.js",
|
||||
"lib/internal/test_runner/assert.js",
|
||||
"lib/internal/test_runner/coverage.js",
|
||||
"lib/internal/test_runner/harness.js",
|
||||
"lib/internal/test_runner/mock/loader.js",
|
||||
"lib/internal/test_runner/mock/mock.js",
|
||||
"lib/internal/test_runner/mock/mock_timers.js",
|
||||
"lib/internal/test_runner/reporter/dot.js",
|
||||
"lib/internal/test_runner/reporter/junit.js",
|
||||
"lib/internal/test_runner/reporter/lcov.js",
|
||||
"lib/internal/test_runner/reporter/rerun.js",
|
||||
"lib/internal/test_runner/reporter/spec.js",
|
||||
"lib/internal/test_runner/reporter/tap.js",
|
||||
"lib/internal/test_runner/reporter/utils.js",
|
||||
"lib/internal/test_runner/reporter/v8-serializer.js",
|
||||
"lib/internal/test_runner/runner.js",
|
||||
"lib/internal/test_runner/snapshot.js",
|
||||
"lib/internal/test_runner/test.js",
|
||||
"lib/internal/test_runner/tests_stream.js",
|
||||
"lib/internal/test_runner/utils.js",
|
||||
"lib/internal/timers.js",
|
||||
"lib/internal/tls/secure-context.js",
|
||||
"lib/internal/trace_events_async_hooks.js",
|
||||
"lib/internal/tty.js",
|
||||
"lib/internal/url.js",
|
||||
"lib/internal/util.js",
|
||||
"lib/internal/util/colors.js",
|
||||
"lib/internal/util/comparisons.js",
|
||||
"lib/internal/util/debuglog.js",
|
||||
"lib/internal/util/diff.js",
|
||||
"lib/internal/util/inspect.js",
|
||||
"lib/internal/util/inspector.js",
|
||||
"lib/internal/util/parse_args/parse_args.js",
|
||||
"lib/internal/util/parse_args/utils.js",
|
||||
"lib/internal/util/trace_sigint.js",
|
||||
"lib/internal/util/types.js",
|
||||
"lib/internal/v8/startup_snapshot.js",
|
||||
"lib/internal/v8_prof_polyfill.js",
|
||||
"lib/internal/v8_prof_processor.js",
|
||||
"lib/internal/validators.js",
|
||||
"lib/internal/vm.js",
|
||||
"lib/internal/vm/module.js",
|
||||
"lib/internal/wasm_web_api.js",
|
||||
"lib/internal/watch_mode/files_watcher.js",
|
||||
"lib/internal/watchdog.js",
|
||||
"lib/internal/webidl.js",
|
||||
"lib/internal/webstorage.js",
|
||||
"lib/internal/webstreams/adapters.js",
|
||||
"lib/internal/webstreams/compression.js",
|
||||
"lib/internal/webstreams/encoding.js",
|
||||
"lib/internal/webstreams/queuingstrategies.js",
|
||||
"lib/internal/webstreams/readablestream.js",
|
||||
"lib/internal/webstreams/transfer.js",
|
||||
"lib/internal/webstreams/transformstream.js",
|
||||
"lib/internal/webstreams/util.js",
|
||||
"lib/internal/webstreams/writablestream.js",
|
||||
"lib/internal/worker.js",
|
||||
"lib/internal/worker/clone_dom_exception.js",
|
||||
"lib/internal/worker/io.js",
|
||||
"lib/internal/worker/js_transferable.js",
|
||||
"lib/internal/worker/messaging.js",
|
||||
"lib/module.js",
|
||||
"lib/net.js",
|
||||
"lib/os.js",
|
||||
"lib/path.js",
|
||||
"lib/path/posix.js",
|
||||
"lib/path/win32.js",
|
||||
"lib/perf_hooks.js",
|
||||
"lib/process.js",
|
||||
"lib/punycode.js",
|
||||
"lib/querystring.js",
|
||||
"lib/quic.js",
|
||||
"lib/readline.js",
|
||||
"lib/readline/promises.js",
|
||||
"lib/repl.js",
|
||||
"lib/sea.js",
|
||||
"lib/sqlite.js",
|
||||
"lib/stream.js",
|
||||
"lib/stream/consumers.js",
|
||||
"lib/stream/promises.js",
|
||||
"lib/stream/web.js",
|
||||
"lib/string_decoder.js",
|
||||
"lib/sys.js",
|
||||
"lib/test.js",
|
||||
"lib/test/reporters.js",
|
||||
"lib/timers.js",
|
||||
"lib/timers/promises.js",
|
||||
"lib/tls.js",
|
||||
"lib/trace_events.js",
|
||||
"lib/tty.js",
|
||||
"lib/url.js",
|
||||
"lib/util.js",
|
||||
"lib/util/types.js",
|
||||
"lib/v8.js",
|
||||
"lib/vm.js",
|
||||
"lib/wasi.js",
|
||||
"lib/worker_threads.js",
|
||||
"lib/zlib.js"
|
||||
],
|
||||
"node_module_version": 137,
|
||||
"node_no_browser_globals": "false",
|
||||
"node_prefix": "\\usr\\local",
|
||||
"node_quic": "false",
|
||||
"node_release_urlbase": "https://nodejs.org/download/release/",
|
||||
"node_shared": "false",
|
||||
"node_shared_ada": "false",
|
||||
"node_shared_brotli": "false",
|
||||
"node_shared_cares": "false",
|
||||
"node_shared_http_parser": "false",
|
||||
"node_shared_libuv": "false",
|
||||
"node_shared_nghttp2": "false",
|
||||
"node_shared_nghttp3": "false",
|
||||
"node_shared_ngtcp2": "false",
|
||||
"node_shared_openssl": "false",
|
||||
"node_shared_simdjson": "false",
|
||||
"node_shared_simdutf": "false",
|
||||
"node_shared_sqlite": "false",
|
||||
"node_shared_uvwasi": "false",
|
||||
"node_shared_zlib": "false",
|
||||
"node_shared_zstd": "false",
|
||||
"node_tag": "",
|
||||
"node_target_type": "executable",
|
||||
"node_use_amaro": "true",
|
||||
"node_use_bundled_v8": "true",
|
||||
"node_use_node_code_cache": "true",
|
||||
"node_use_node_snapshot": "true",
|
||||
"node_use_openssl": "true",
|
||||
"node_use_sqlite": "true",
|
||||
"node_use_v8_platform": "true",
|
||||
"node_with_ltcg": "true",
|
||||
"node_without_node_options": "false",
|
||||
"node_write_snapshot_as_array_literals": "true",
|
||||
"openssl_is_fips": "false",
|
||||
"openssl_quic": "false",
|
||||
"ossfuzz": "false",
|
||||
"shlib_suffix": "so.137",
|
||||
"single_executable_application": "true",
|
||||
"suppress_all_error_on_warn": "false",
|
||||
"target_arch": "x64",
|
||||
"ubsan": 0,
|
||||
"use_ccache_win": 0,
|
||||
"use_prefix_to_find_headers": "false",
|
||||
"v8_enable_31bit_smis_on_64bit_arch": 0,
|
||||
"v8_enable_extensible_ro_snapshot": 0,
|
||||
"v8_enable_external_code_space": 0,
|
||||
"v8_enable_gdbjit": 0,
|
||||
"v8_enable_hugepage": 0,
|
||||
"v8_enable_i18n_support": 1,
|
||||
"v8_enable_inspector": 1,
|
||||
"v8_enable_javascript_promise_hooks": 1,
|
||||
"v8_enable_lite_mode": 0,
|
||||
"v8_enable_maglev": 1,
|
||||
"v8_enable_object_print": 1,
|
||||
"v8_enable_pointer_compression": 0,
|
||||
"v8_enable_pointer_compression_shared_cage": 0,
|
||||
"v8_enable_sandbox": 0,
|
||||
"v8_enable_short_builtin_calls": 1,
|
||||
"v8_enable_wasm_simd256_revec": 1,
|
||||
"v8_enable_webassembly": 1,
|
||||
"v8_optimized_debug": 1,
|
||||
"v8_promise_internal_field_count": 1,
|
||||
"v8_random_seed": 0,
|
||||
"v8_trace_maps": 0,
|
||||
"v8_use_siphash": 1,
|
||||
"want_separate_host_toolset": 0,
|
||||
"nodedir": "C:\\Users\\dimir\\AppData\\Local\\node-gyp\\Cache\\24.11.1",
|
||||
"python": "C:\\Users\\dimir\\AppData\\Local\\Programs\\Python\\Python312\\python.exe",
|
||||
"standalone_static_library": 1,
|
||||
"msbuild_path": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\MSBuild\\Current\\Bin\\MSBuild.exe",
|
||||
"user_agent": "npm/11.12.0 node/v24.11.1 win32 x64 workspaces/false",
|
||||
"userconfig": "C:\\Users\\dimir\\.npmrc",
|
||||
"save_dev": "true",
|
||||
"prefix": "C:\\Users\\dimir\\AppData\\Roaming\\npm",
|
||||
"npm_version": "11.12.0",
|
||||
"node_gyp": "C:\\Users\\dimir\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js",
|
||||
"local_prefix": "C:\\Users\\dimir\\ssh-updater",
|
||||
"init_module": "C:\\Users\\dimir\\.npm-init.js",
|
||||
"global_prefix": "C:\\Users\\dimir\\AppData\\Roaming\\npm",
|
||||
"globalconfig": "C:\\Users\\dimir\\AppData\\Roaming\\npm\\etc\\npmrc",
|
||||
"cache": "C:\\Users\\dimir\\AppData\\Local\\npm-cache"
|
||||
}
|
||||
}
|
||||
+154
@@ -0,0 +1,154 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{E9636B9B-68D9-3944-2CA4-E82FBED9C67D}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>cpufeatures</RootNamespace>
|
||||
<IgnoreWarnCompileDuplicatedFilename>true</IgnoreWarnCompileDuplicatedFilename>
|
||||
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
|
||||
<WindowsTargetPlatformVersion>10.0.26100.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
|
||||
<PropertyGroup Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Locals">
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
|
||||
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props"/>
|
||||
<ImportGroup Label="ExtensionSettings"/>
|
||||
<ImportGroup Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros"/>
|
||||
<PropertyGroup>
|
||||
<ExecutablePath>$(ExecutablePath);$(MSBuildProjectDirectory)\..\bin\;$(MSBuildProjectDirectory)\..\bin\</ExecutablePath>
|
||||
<IgnoreImportLibrary>true</IgnoreImportLibrary>
|
||||
<IntDir>$(Configuration)\obj\$(ProjectName)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.node</TargetExt>
|
||||
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.node</TargetExt>
|
||||
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.node</TargetExt>
|
||||
<TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.node</TargetExt>
|
||||
<TargetName>$(ProjectName)</TargetName>
|
||||
<TargetPath>$(OutDir)\$(ProjectName).node</TargetPath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\include\node;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\src;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\openssl\config;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\openssl\openssl\include;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\uv\include;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\zlib;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\v8\include;..\src;..\..\nan;..\deps\cpu_features\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalOptions>/Zc:__cplusplus -std:c++20 /Zm2000 %(AdditionalOptions)</AdditionalOptions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<DebugInformationFormat>OldStyle</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4351;4355;4800;4251;4275;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<OmitFramePointers>false</OmitFramePointers>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>NODE_GYP_MODULE_NAME=cpufeatures;USING_UV_SHARED=1;USING_V8_SHARED=1;V8_DEPRECATION_WARNINGS=1;_GLIBCXX_USE_CXX11_ABI=1;_FILE_OFFSET_BITS=64;WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_HAS_EXCEPTIONS=0;NOMINMAX;OPENSSL_NO_PINSHARED;OPENSSL_THREADS;CPU_FEATURES_VERSION_REV=8a494eb1e158ec2050e5f699a504fbc9b896a43b;BUILDING_NODE_EXTENSION;HOST_BINARY="node.exe";DEBUG;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<StringPooling>true</StringPooling>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TreatWarningAsError>false</TreatWarningAsError>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<AdditionalOptions>/LTCG:INCREMENTAL %(AdditionalOptions)</AdditionalOptions>
|
||||
</Lib>
|
||||
<Link>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;delayimp.lib;"C:\\Users\\dimir\\AppData\\Local\\node-gyp\\Cache\\24.11.1\\x64\\node.lib"</AdditionalDependencies>
|
||||
<AdditionalOptions>/LTCG:INCREMENTAL /ignore:4199 %(AdditionalOptions)</AdditionalOptions>
|
||||
<DelayLoadDLLs>node.exe;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<OutputFile>$(OutDir)$(ProjectName).node</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TargetExt>.node</TargetExt>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\include\node;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\src;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\openssl\config;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\openssl\openssl\include;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\uv\include;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\zlib;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\v8\include;..\src;..\..\nan;..\deps\cpu_features\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NODE_GYP_MODULE_NAME=cpufeatures;USING_UV_SHARED=1;USING_V8_SHARED=1;V8_DEPRECATION_WARNINGS=1;_GLIBCXX_USE_CXX11_ABI=1;_FILE_OFFSET_BITS=64;WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_HAS_EXCEPTIONS=0;NOMINMAX;OPENSSL_NO_PINSHARED;OPENSSL_THREADS;CPU_FEATURES_VERSION_REV=8a494eb1e158ec2050e5f699a504fbc9b896a43b;BUILDING_NODE_EXTENSION;HOST_BINARY="node.exe";DEBUG;_DEBUG;%(PreprocessorDefinitions);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\include\node;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\src;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\openssl\config;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\openssl\openssl\include;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\uv\include;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\zlib;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\v8\include;..\src;..\..\nan;..\deps\cpu_features\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalOptions>/Zc:__cplusplus -std:c++20 /Zm2000 %(AdditionalOptions)</AdditionalOptions>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<DebugInformationFormat>OldStyle</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4351;4355;4800;4251;4275;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<Optimization>Full</Optimization>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>NODE_GYP_MODULE_NAME=cpufeatures;USING_UV_SHARED=1;USING_V8_SHARED=1;V8_DEPRECATION_WARNINGS=1;_GLIBCXX_USE_CXX11_ABI=1;_FILE_OFFSET_BITS=64;WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_HAS_EXCEPTIONS=0;NOMINMAX;OPENSSL_NO_PINSHARED;OPENSSL_THREADS;CPU_FEATURES_VERSION_REV=8a494eb1e158ec2050e5f699a504fbc9b896a43b;BUILDING_NODE_EXTENSION;HOST_BINARY="node.exe";%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<StringPooling>true</StringPooling>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TreatWarningAsError>false</TreatWarningAsError>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<AdditionalOptions>/LTCG:INCREMENTAL %(AdditionalOptions)</AdditionalOptions>
|
||||
</Lib>
|
||||
<Link>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;delayimp.lib;"C:\\Users\\dimir\\AppData\\Local\\node-gyp\\Cache\\24.11.1\\x64\\node.lib"</AdditionalDependencies>
|
||||
<AdditionalOptions>/LTCG:INCREMENTAL /ignore:4199 %(AdditionalOptions)</AdditionalOptions>
|
||||
<DelayLoadDLLs>node.exe;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<OutputFile>$(OutDir)$(ProjectName).node</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TargetExt>.node</TargetExt>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\include\node;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\src;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\openssl\config;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\openssl\openssl\include;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\uv\include;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\zlib;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\v8\include;..\src;..\..\nan;..\deps\cpu_features\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NODE_GYP_MODULE_NAME=cpufeatures;USING_UV_SHARED=1;USING_V8_SHARED=1;V8_DEPRECATION_WARNINGS=1;_GLIBCXX_USE_CXX11_ABI=1;_FILE_OFFSET_BITS=64;WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_HAS_EXCEPTIONS=0;NOMINMAX;OPENSSL_NO_PINSHARED;OPENSSL_THREADS;CPU_FEATURES_VERSION_REV=8a494eb1e158ec2050e5f699a504fbc9b896a43b;BUILDING_NODE_EXTENSION;HOST_BINARY="node.exe";%(PreprocessorDefinitions);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\binding.gyp"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\src\binding.cc">
|
||||
<ObjectFileName>$(IntDir)\src\binding.obj</ObjectFileName>
|
||||
</ClCompile>
|
||||
<ClCompile Include="C:\Users\dimir\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\src\win_delay_load_hook.cc"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="deps\cpu_features\cpu_features.vcxproj">
|
||||
<Project>{78207788-485E-5C1C-EBBB-C9E475C84D8E}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
|
||||
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets"/>
|
||||
<ImportGroup Label="ExtensionTargets"/>
|
||||
</Project>
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\src">
|
||||
<UniqueIdentifier>{F1003AD6-4B6D-45DF-3F56-5CAC869BF55E}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:">
|
||||
<UniqueIdentifier>{F87FD356-0FEB-9BC5-D1FA-368C81420008}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users">
|
||||
<UniqueIdentifier>{707347A1-1ABA-A9B2-9AF4-DE122F5D7F08}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users\dimir">
|
||||
<UniqueIdentifier>{9110070F-34CE-9DE2-A12E-05D95C34015C}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users\dimir\AppData">
|
||||
<UniqueIdentifier>{DABCEBCE-33D1-4D68-EC67-0BC19A2A0901}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users\dimir\AppData\Roaming">
|
||||
<UniqueIdentifier>{06897101-0A2C-F34A-36C2-4D0BE8BF5EB9}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users\dimir\AppData\Roaming\npm">
|
||||
<UniqueIdentifier>{E6F3EBE6-A3A6-AA7E-34C1-5CE4364854E4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users\dimir\AppData\Roaming\npm\node_modules">
|
||||
<UniqueIdentifier>{126A39EA-1D28-5689-C126-0DA0AB5837A0}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users\dimir\AppData\Roaming\npm\node_modules\npm">
|
||||
<UniqueIdentifier>{E6F3EBE6-A3A6-AA7E-34C1-5CE4364854E4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users\dimir\AppData\Roaming\npm\node_modules\npm\node_modules">
|
||||
<UniqueIdentifier>{126A39EA-1D28-5689-C126-0DA0AB5837A0}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users\dimir\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp">
|
||||
<UniqueIdentifier>{49558BB4-6D34-CA91-A65D-85A65792DC11}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users\dimir\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\src">
|
||||
<UniqueIdentifier>{F1003AD6-4B6D-45DF-3F56-5CAC869BF55E}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\src\binding.cc">
|
||||
<Filter>..\src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="C:\Users\dimir\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\src\win_delay_load_hook.cc">
|
||||
<Filter>C:\Users\dimir\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\src</Filter>
|
||||
</ClCompile>
|
||||
<None Include="..\binding.gyp">
|
||||
<Filter>..</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Generated
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<ProjectOutputs />
|
||||
<ContentFiles />
|
||||
<SatelliteDlls />
|
||||
<NonRecipeFileRefs />
|
||||
</Project>
|
||||
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
+14
@@ -0,0 +1,14 @@
|
||||
C:\Users\dimir\ssh-updater\node_modules\cpu-features\deps\cpu_features\src\impl_aarch64_linux_or_android.c;C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\deps\cpu_features\Release\obj\cpu_features\deps\cpu_features\src\impl_aarch64_linux_or_android.obj
|
||||
C:\Users\dimir\ssh-updater\node_modules\cpu-features\deps\cpu_features\src\impl_aarch64_macos_or_iphone.c;C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\deps\cpu_features\Release\obj\cpu_features\deps\cpu_features\src\impl_aarch64_macos_or_iphone.obj
|
||||
C:\Users\dimir\ssh-updater\node_modules\cpu-features\deps\cpu_features\src\impl_aarch64_windows.c;C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\deps\cpu_features\Release\obj\cpu_features\deps\cpu_features\src\impl_aarch64_windows.obj
|
||||
C:\Users\dimir\ssh-updater\node_modules\cpu-features\deps\cpu_features\src\impl_arm_linux_or_android.c;C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\deps\cpu_features\Release\obj\cpu_features\deps\cpu_features\src\impl_arm_linux_or_android.obj
|
||||
C:\Users\dimir\ssh-updater\node_modules\cpu-features\deps\cpu_features\src\impl_mips_linux_or_android.c;C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\deps\cpu_features\Release\obj\cpu_features\deps\cpu_features\src\impl_mips_linux_or_android.obj
|
||||
C:\Users\dimir\ssh-updater\node_modules\cpu-features\deps\cpu_features\src\impl_ppc_linux.c;C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\deps\cpu_features\Release\obj\cpu_features\deps\cpu_features\src\impl_ppc_linux.obj
|
||||
C:\Users\dimir\ssh-updater\node_modules\cpu-features\deps\cpu_features\src\impl_x86_freebsd.c;C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\deps\cpu_features\Release\obj\cpu_features\deps\cpu_features\src\impl_x86_freebsd.obj
|
||||
C:\Users\dimir\ssh-updater\node_modules\cpu-features\deps\cpu_features\src\impl_x86_linux_or_android.c;C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\deps\cpu_features\Release\obj\cpu_features\deps\cpu_features\src\impl_x86_linux_or_android.obj
|
||||
C:\Users\dimir\ssh-updater\node_modules\cpu-features\deps\cpu_features\src\impl_x86_macos.c;C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\deps\cpu_features\Release\obj\cpu_features\deps\cpu_features\src\impl_x86_macos.obj
|
||||
C:\Users\dimir\ssh-updater\node_modules\cpu-features\deps\cpu_features\src\impl_x86_windows.c;C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\deps\cpu_features\Release\obj\cpu_features\deps\cpu_features\src\impl_x86_windows.obj
|
||||
C:\Users\dimir\ssh-updater\node_modules\cpu-features\deps\cpu_features\src\filesystem.c;C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\deps\cpu_features\Release\obj\cpu_features\deps\cpu_features\src\filesystem.obj
|
||||
C:\Users\dimir\ssh-updater\node_modules\cpu-features\deps\cpu_features\src\stack_line_reader.c;C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\deps\cpu_features\Release\obj\cpu_features\deps\cpu_features\src\stack_line_reader.obj
|
||||
C:\Users\dimir\ssh-updater\node_modules\cpu-features\deps\cpu_features\src\string_view.c;C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\deps\cpu_features\Release\obj\cpu_features\deps\cpu_features\src\string_view.obj
|
||||
C:\Users\dimir\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\src\win_delay_load_hook.cc;C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\deps\cpu_features\Release\obj\cpu_features\win_delay_load_hook.obj
|
||||
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.44.35207:TargetPlatformVersion=10.0.26100.0:
|
||||
Release|x64|C:\Users\dimir\ssh-updater\node_modules\cpu-features\build\|
|
||||
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
Generated
Vendored
BIN
Binary file not shown.
+19
@@ -0,0 +1,19 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2015
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpu_features", "cpu_features.vcxproj", "{78207788-485E-5C1C-EBBB-C9E475C84D8E}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Release|x64 = Release|x64
|
||||
Debug|x64 = Debug|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{78207788-485E-5C1C-EBBB-C9E475C84D8E}.Release|x64.ActiveCfg = Release|x64
|
||||
{78207788-485E-5C1C-EBBB-C9E475C84D8E}.Release|x64.Build.0 = Release|x64
|
||||
{78207788-485E-5C1C-EBBB-C9E475C84D8E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{78207788-485E-5C1C-EBBB-C9E475C84D8E}.Debug|x64.Build.0 = Debug|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
+188
@@ -0,0 +1,188 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{78207788-485E-5C1C-EBBB-C9E475C84D8E}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>cpu_features</RootNamespace>
|
||||
<IgnoreWarnCompileDuplicatedFilename>true</IgnoreWarnCompileDuplicatedFilename>
|
||||
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
|
||||
<WindowsTargetPlatformVersion>10.0.26100.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
|
||||
<PropertyGroup Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Locals">
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
|
||||
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props"/>
|
||||
<ImportGroup Label="ExtensionSettings"/>
|
||||
<ImportGroup Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros"/>
|
||||
<PropertyGroup>
|
||||
<ExecutablePath>$(ExecutablePath);$(MSBuildProjectDirectory)\..\..\..\deps\cpu_features\bin\;$(MSBuildProjectDirectory)\..\..\..\deps\cpu_features\bin\</ExecutablePath>
|
||||
<IntDir>$(Configuration)\obj\$(ProjectName)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
||||
<TargetName>$(ProjectName)</TargetName>
|
||||
<TargetPath>$(OutDir)\$(ProjectName)$(TargetExt)</TargetPath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\include\node;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\src;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\openssl\config;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\openssl\openssl\include;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\uv\include;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\zlib;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\v8\include;..\..\..\deps\cpu_features\include;..\..\..\deps\cpu_features\include\internal;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalOptions>/Zc:__cplusplus -std:c++20 /Zm2000 %(AdditionalOptions)</AdditionalOptions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<DebugInformationFormat>OldStyle</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4351;4355;4800;4251;4275;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<OmitFramePointers>false</OmitFramePointers>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>NODE_GYP_MODULE_NAME=cpu_features;USING_UV_SHARED=1;USING_V8_SHARED=1;V8_DEPRECATION_WARNINGS=1;_GLIBCXX_USE_CXX11_ABI=1;_FILE_OFFSET_BITS=64;WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_HAS_EXCEPTIONS=0;NOMINMAX;OPENSSL_NO_PINSHARED;OPENSSL_THREADS;NDEBUG;STACK_LINE_READER_BUFFER_SIZE=1024;HOST_BINARY="node.exe";DEBUG;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<StringPooling>true</StringPooling>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TreatWarningAsError>false</TreatWarningAsError>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<AdditionalOptions>/LTCG:INCREMENTAL %(AdditionalOptions)</AdditionalOptions>
|
||||
<OutputFile>$(OutDir)$(ProjectName)$(TargetExt)</OutputFile>
|
||||
</Lib>
|
||||
<Link>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;delayimp.lib;"C:\\Users\\dimir\\AppData\\Local\\node-gyp\\Cache\\24.11.1\\x64\\node.lib"</AdditionalDependencies>
|
||||
<AdditionalOptions>/LTCG:INCREMENTAL /ignore:4199 %(AdditionalOptions)</AdditionalOptions>
|
||||
<DelayLoadDLLs>node.exe;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\include\node;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\src;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\openssl\config;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\openssl\openssl\include;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\uv\include;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\zlib;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\v8\include;..\..\..\deps\cpu_features\include;..\..\..\deps\cpu_features\include\internal;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NODE_GYP_MODULE_NAME=cpu_features;USING_UV_SHARED=1;USING_V8_SHARED=1;V8_DEPRECATION_WARNINGS=1;_GLIBCXX_USE_CXX11_ABI=1;_FILE_OFFSET_BITS=64;WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_HAS_EXCEPTIONS=0;NOMINMAX;OPENSSL_NO_PINSHARED;OPENSSL_THREADS;NDEBUG;STACK_LINE_READER_BUFFER_SIZE=1024;HOST_BINARY="node.exe";DEBUG;_DEBUG;%(PreprocessorDefinitions);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\include\node;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\src;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\openssl\config;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\openssl\openssl\include;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\uv\include;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\zlib;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\v8\include;..\..\..\deps\cpu_features\include;..\..\..\deps\cpu_features\include\internal;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalOptions>/Zc:__cplusplus -std:c++20 /Zm2000 %(AdditionalOptions)</AdditionalOptions>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<DebugInformationFormat>OldStyle</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4351;4355;4800;4251;4275;4244;4267;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<Optimization>Full</Optimization>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PreprocessorDefinitions>NODE_GYP_MODULE_NAME=cpu_features;USING_UV_SHARED=1;USING_V8_SHARED=1;V8_DEPRECATION_WARNINGS=1;_GLIBCXX_USE_CXX11_ABI=1;_FILE_OFFSET_BITS=64;WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_HAS_EXCEPTIONS=0;NOMINMAX;OPENSSL_NO_PINSHARED;OPENSSL_THREADS;NDEBUG;STACK_LINE_READER_BUFFER_SIZE=1024;HOST_BINARY="node.exe";%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<StringPooling>true</StringPooling>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TreatWarningAsError>false</TreatWarningAsError>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<AdditionalOptions>/LTCG:INCREMENTAL %(AdditionalOptions)</AdditionalOptions>
|
||||
<OutputFile>$(OutDir)$(ProjectName)$(TargetExt)</OutputFile>
|
||||
</Lib>
|
||||
<Link>
|
||||
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;delayimp.lib;"C:\\Users\\dimir\\AppData\\Local\\node-gyp\\Cache\\24.11.1\\x64\\node.lib"</AdditionalDependencies>
|
||||
<AdditionalOptions>/LTCG:INCREMENTAL /ignore:4199 %(AdditionalOptions)</AdditionalOptions>
|
||||
<DelayLoadDLLs>node.exe;%(DelayLoadDLLs)</DelayLoadDLLs>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\include\node;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\src;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\openssl\config;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\openssl\openssl\include;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\uv\include;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\zlib;C:\Users\dimir\AppData\Local\node-gyp\Cache\24.11.1\deps\v8\include;..\..\..\deps\cpu_features\include;..\..\..\deps\cpu_features\include\internal;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NODE_GYP_MODULE_NAME=cpu_features;USING_UV_SHARED=1;USING_V8_SHARED=1;V8_DEPRECATION_WARNINGS=1;_GLIBCXX_USE_CXX11_ABI=1;_FILE_OFFSET_BITS=64;WIN32;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_HAS_EXCEPTIONS=0;NOMINMAX;OPENSSL_NO_PINSHARED;OPENSSL_THREADS;NDEBUG;STACK_LINE_READER_BUFFER_SIZE=1024;HOST_BINARY="node.exe";%(PreprocessorDefinitions);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\..\deps\cpu_features\cpu_features.gyp"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\..\deps\cpu_features\include\cpu_features_cache_info.h"/>
|
||||
<ClInclude Include="..\..\..\deps\cpu_features\include\cpu_features_macros.h"/>
|
||||
<ClInclude Include="..\..\..\deps\cpu_features\include\internal\bit_utils.h"/>
|
||||
<ClInclude Include="..\..\..\deps\cpu_features\include\internal\filesystem.h"/>
|
||||
<ClInclude Include="..\..\..\deps\cpu_features\include\internal\stack_line_reader.h"/>
|
||||
<ClInclude Include="..\..\..\deps\cpu_features\include\internal\string_view.h"/>
|
||||
<ClInclude Include="..\..\..\deps\cpu_features\include\internal\cpuid_x86.h"/>
|
||||
<ClInclude Include="..\..\..\deps\cpu_features\include\cpuinfo_x86.h"/>
|
||||
<ClInclude Include="..\..\..\deps\cpu_features\include\internal\windows_utils.h"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_aarch64_linux_or_android.c">
|
||||
<ObjectFileName>$(IntDir)\deps\cpu_features\src\impl_aarch64_linux_or_android.obj</ObjectFileName>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_aarch64_macos_or_iphone.c">
|
||||
<ObjectFileName>$(IntDir)\deps\cpu_features\src\impl_aarch64_macos_or_iphone.obj</ObjectFileName>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_aarch64_windows.c">
|
||||
<ObjectFileName>$(IntDir)\deps\cpu_features\src\impl_aarch64_windows.obj</ObjectFileName>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_arm_linux_or_android.c">
|
||||
<ObjectFileName>$(IntDir)\deps\cpu_features\src\impl_arm_linux_or_android.obj</ObjectFileName>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_mips_linux_or_android.c">
|
||||
<ObjectFileName>$(IntDir)\deps\cpu_features\src\impl_mips_linux_or_android.obj</ObjectFileName>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_ppc_linux.c">
|
||||
<ObjectFileName>$(IntDir)\deps\cpu_features\src\impl_ppc_linux.obj</ObjectFileName>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_x86_freebsd.c">
|
||||
<ObjectFileName>$(IntDir)\deps\cpu_features\src\impl_x86_freebsd.obj</ObjectFileName>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_x86_linux_or_android.c">
|
||||
<ObjectFileName>$(IntDir)\deps\cpu_features\src\impl_x86_linux_or_android.obj</ObjectFileName>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_x86_macos.c">
|
||||
<ObjectFileName>$(IntDir)\deps\cpu_features\src\impl_x86_macos.obj</ObjectFileName>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_x86_windows.c">
|
||||
<ObjectFileName>$(IntDir)\deps\cpu_features\src\impl_x86_windows.obj</ObjectFileName>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\filesystem.c">
|
||||
<ObjectFileName>$(IntDir)\deps\cpu_features\src\filesystem.obj</ObjectFileName>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\stack_line_reader.c">
|
||||
<ObjectFileName>$(IntDir)\deps\cpu_features\src\stack_line_reader.obj</ObjectFileName>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\string_view.c">
|
||||
<ObjectFileName>$(IntDir)\deps\cpu_features\src\string_view.obj</ObjectFileName>
|
||||
</ClCompile>
|
||||
<ClCompile Include="C:\Users\dimir\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\src\win_delay_load_hook.cc"/>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
|
||||
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets"/>
|
||||
<ImportGroup Label="ExtensionTargets"/>
|
||||
</Project>
|
||||
+541
@@ -0,0 +1,541 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\include">
|
||||
<UniqueIdentifier>{EBFF9202-D712-95C2-78A5-A4295ED095B4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\include">
|
||||
<UniqueIdentifier>{EBFF9202-D712-95C2-78A5-A4295ED095B4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\src">
|
||||
<UniqueIdentifier>{F1003AD6-4B6D-45DF-3F56-5CAC869BF55E}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\src">
|
||||
<UniqueIdentifier>{F1003AD6-4B6D-45DF-3F56-5CAC869BF55E}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\src">
|
||||
<UniqueIdentifier>{F1003AD6-4B6D-45DF-3F56-5CAC869BF55E}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\src">
|
||||
<UniqueIdentifier>{F1003AD6-4B6D-45DF-3F56-5CAC869BF55E}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\src">
|
||||
<UniqueIdentifier>{F1003AD6-4B6D-45DF-3F56-5CAC869BF55E}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\src">
|
||||
<UniqueIdentifier>{F1003AD6-4B6D-45DF-3F56-5CAC869BF55E}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\src">
|
||||
<UniqueIdentifier>{F1003AD6-4B6D-45DF-3F56-5CAC869BF55E}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\src">
|
||||
<UniqueIdentifier>{F1003AD6-4B6D-45DF-3F56-5CAC869BF55E}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\src">
|
||||
<UniqueIdentifier>{F1003AD6-4B6D-45DF-3F56-5CAC869BF55E}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\src">
|
||||
<UniqueIdentifier>{F1003AD6-4B6D-45DF-3F56-5CAC869BF55E}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\include">
|
||||
<UniqueIdentifier>{EBFF9202-D712-95C2-78A5-A4295ED095B4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\include\internal">
|
||||
<UniqueIdentifier>{FD05739B-3B72-75A2-6C4F-F449E96E0C54}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\include">
|
||||
<UniqueIdentifier>{EBFF9202-D712-95C2-78A5-A4295ED095B4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\include\internal">
|
||||
<UniqueIdentifier>{FD05739B-3B72-75A2-6C4F-F449E96E0C54}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\include">
|
||||
<UniqueIdentifier>{EBFF9202-D712-95C2-78A5-A4295ED095B4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\include\internal">
|
||||
<UniqueIdentifier>{FD05739B-3B72-75A2-6C4F-F449E96E0C54}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\include">
|
||||
<UniqueIdentifier>{EBFF9202-D712-95C2-78A5-A4295ED095B4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\include\internal">
|
||||
<UniqueIdentifier>{FD05739B-3B72-75A2-6C4F-F449E96E0C54}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\src">
|
||||
<UniqueIdentifier>{F1003AD6-4B6D-45DF-3F56-5CAC869BF55E}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\src">
|
||||
<UniqueIdentifier>{F1003AD6-4B6D-45DF-3F56-5CAC869BF55E}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\src">
|
||||
<UniqueIdentifier>{F1003AD6-4B6D-45DF-3F56-5CAC869BF55E}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\include">
|
||||
<UniqueIdentifier>{EBFF9202-D712-95C2-78A5-A4295ED095B4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\include\internal">
|
||||
<UniqueIdentifier>{FD05739B-3B72-75A2-6C4F-F449E96E0C54}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\include">
|
||||
<UniqueIdentifier>{EBFF9202-D712-95C2-78A5-A4295ED095B4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\include">
|
||||
<UniqueIdentifier>{EBFF9202-D712-95C2-78A5-A4295ED095B4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features\include\internal">
|
||||
<UniqueIdentifier>{FD05739B-3B72-75A2-6C4F-F449E96E0C54}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:">
|
||||
<UniqueIdentifier>{F87FD356-0FEB-9BC5-D1FA-368C81420008}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users">
|
||||
<UniqueIdentifier>{707347A1-1ABA-A9B2-9AF4-DE122F5D7F08}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users\dimir">
|
||||
<UniqueIdentifier>{9110070F-34CE-9DE2-A12E-05D95C34015C}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users\dimir\AppData">
|
||||
<UniqueIdentifier>{DABCEBCE-33D1-4D68-EC67-0BC19A2A0901}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users\dimir\AppData\Roaming">
|
||||
<UniqueIdentifier>{06897101-0A2C-F34A-36C2-4D0BE8BF5EB9}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users\dimir\AppData\Roaming\npm">
|
||||
<UniqueIdentifier>{E6F3EBE6-A3A6-AA7E-34C1-5CE4364854E4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users\dimir\AppData\Roaming\npm\node_modules">
|
||||
<UniqueIdentifier>{126A39EA-1D28-5689-C126-0DA0AB5837A0}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users\dimir\AppData\Roaming\npm\node_modules\npm">
|
||||
<UniqueIdentifier>{E6F3EBE6-A3A6-AA7E-34C1-5CE4364854E4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users\dimir\AppData\Roaming\npm\node_modules\npm\node_modules">
|
||||
<UniqueIdentifier>{126A39EA-1D28-5689-C126-0DA0AB5837A0}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users\dimir\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp">
|
||||
<UniqueIdentifier>{49558BB4-6D34-CA91-A65D-85A65792DC11}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="C:\Users\dimir\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\src">
|
||||
<UniqueIdentifier>{F1003AD6-4B6D-45DF-3F56-5CAC869BF55E}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..">
|
||||
<UniqueIdentifier>{13ED4249-1F9C-5F0F-2651-29A73F3A7059}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps">
|
||||
<UniqueIdentifier>{8F4D108C-CDC5-48AC-AEE2-230B23E0C688}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="..\..\..\deps\cpu_features">
|
||||
<UniqueIdentifier>{D2572D9E-2400-4406-9B2C-5D3D5A6234F7}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\..\deps\cpu_features\include\cpu_features_cache_info.h">
|
||||
<Filter>..\..\..\deps\cpu_features\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\deps\cpu_features\include\cpu_features_macros.h">
|
||||
<Filter>..\..\..\deps\cpu_features\include</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_aarch64_linux_or_android.c">
|
||||
<Filter>..\..\..\deps\cpu_features\src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_aarch64_macos_or_iphone.c">
|
||||
<Filter>..\..\..\deps\cpu_features\src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_aarch64_windows.c">
|
||||
<Filter>..\..\..\deps\cpu_features\src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_arm_linux_or_android.c">
|
||||
<Filter>..\..\..\deps\cpu_features\src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_mips_linux_or_android.c">
|
||||
<Filter>..\..\..\deps\cpu_features\src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_ppc_linux.c">
|
||||
<Filter>..\..\..\deps\cpu_features\src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_x86_freebsd.c">
|
||||
<Filter>..\..\..\deps\cpu_features\src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_x86_linux_or_android.c">
|
||||
<Filter>..\..\..\deps\cpu_features\src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_x86_macos.c">
|
||||
<Filter>..\..\..\deps\cpu_features\src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\impl_x86_windows.c">
|
||||
<Filter>..\..\..\deps\cpu_features\src</Filter>
|
||||
</ClCompile>
|
||||
<ClInclude Include="..\..\..\deps\cpu_features\include\internal\bit_utils.h">
|
||||
<Filter>..\..\..\deps\cpu_features\include\internal</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\deps\cpu_features\include\internal\filesystem.h">
|
||||
<Filter>..\..\..\deps\cpu_features\include\internal</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\deps\cpu_features\include\internal\stack_line_reader.h">
|
||||
<Filter>..\..\..\deps\cpu_features\include\internal</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\deps\cpu_features\include\internal\string_view.h">
|
||||
<Filter>..\..\..\deps\cpu_features\include\internal</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\filesystem.c">
|
||||
<Filter>..\..\..\deps\cpu_features\src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\stack_line_reader.c">
|
||||
<Filter>..\..\..\deps\cpu_features\src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\deps\cpu_features\src\string_view.c">
|
||||
<Filter>..\..\..\deps\cpu_features\src</Filter>
|
||||
</ClCompile>
|
||||
<ClInclude Include="..\..\..\deps\cpu_features\include\internal\cpuid_x86.h">
|
||||
<Filter>..\..\..\deps\cpu_features\include\internal</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\deps\cpu_features\include\cpuinfo_x86.h">
|
||||
<Filter>..\..\..\deps\cpu_features\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\deps\cpu_features\include\internal\windows_utils.h">
|
||||
<Filter>..\..\..\deps\cpu_features\include\internal</Filter>
|
||||
</ClInclude>
|
||||
<ClCompile Include="C:\Users\dimir\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\src\win_delay_load_hook.cc">
|
||||
<Filter>C:\Users\dimir\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\src</Filter>
|
||||
</ClCompile>
|
||||
<None Include="..\..\..\deps\cpu_features\cpu_features.gyp">
|
||||
<Filter>..\..\..\deps\cpu_features</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"conditions": [
|
||||
[
|
||||
"OS!=\"win\" and target_arch not in \"ia32 x32 x64\"",
|
||||
{
|
||||
"defines": [
|
||||
"HAVE_DLFCN_H=1"
|
||||
],
|
||||
"libraries": [],
|
||||
"sources": [
|
||||
"deps/cpu_features/include/internal/hwcaps.h",
|
||||
"deps/cpu_features/src/hwcaps.c"
|
||||
]
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
'use strict';
|
||||
|
||||
const BuildEnvironment = require('buildcheck');
|
||||
|
||||
const be = new BuildEnvironment();
|
||||
|
||||
let gyp = {
|
||||
defines: [],
|
||||
libraries: [],
|
||||
sources: [
|
||||
'deps/cpu_features/include/internal/hwcaps.h',
|
||||
'deps/cpu_features/src/hwcaps.c',
|
||||
],
|
||||
};
|
||||
|
||||
be.checkHeader('c', 'dlfcn.h');
|
||||
|
||||
if (be.checkDeclared('c', 'getauxval', { headers: ['sys/auxv.h'] }))
|
||||
gyp.defines.push('HAVE_STRONG_GETAUXVAL=1');
|
||||
|
||||
// Add the things we detected
|
||||
gyp.defines.push(...be.defines(null, true));
|
||||
gyp.libraries.push(...be.libs());
|
||||
|
||||
gyp = {
|
||||
conditions: [
|
||||
['OS!="win" and target_arch not in "ia32 x32 x64"',
|
||||
gyp],
|
||||
],
|
||||
};
|
||||
|
||||
console.log(JSON.stringify(gyp, null, 2));
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
---
|
||||
Language: Cpp
|
||||
BasedOnStyle: Google
|
||||
...
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
# Project Files unneeded by docker
|
||||
cmake/ci/Makefile
|
||||
cmake/ci/docker
|
||||
cmake/ci/doc
|
||||
cmake/ci/cache
|
||||
.git
|
||||
.gitignore
|
||||
.github
|
||||
.dockerignore
|
||||
.clang-format
|
||||
appveyor.yml
|
||||
.travis.yml
|
||||
AUTHORS
|
||||
CONTRIBUTING.md
|
||||
CONTRIBUTORS
|
||||
LICENSE
|
||||
README.md
|
||||
|
||||
build/
|
||||
cmake_build/
|
||||
build_cross/
|
||||
cmake-build-*/
|
||||
out/
|
||||
|
||||
# Editor directories and files
|
||||
.idea/
|
||||
.vagrant/
|
||||
.vscode/
|
||||
.vs/
|
||||
*.user
|
||||
*.swp
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
# Create a virtual environment with all tools installed
|
||||
# ref: https://hub.docker.com/_/alpine
|
||||
FROM alpine:edge
|
||||
# Install system build dependencies
|
||||
RUN apk add --no-cache git clang-extra-tools
|
||||
Generated
Vendored
+30
@@ -0,0 +1,30 @@
|
||||
name: AArch64 Linux CMake
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
schedule:
|
||||
# min hours day(month) month day(week)
|
||||
- cron: '0 0 7,22 * *'
|
||||
|
||||
jobs:
|
||||
# Building using the github runner environement directly.
|
||||
make:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
targets: [
|
||||
[aarch64],
|
||||
[aarch64be],
|
||||
[aarch64-linux-gnu],
|
||||
[aarch64_be-linux-gnu]
|
||||
]
|
||||
fail-fast: false
|
||||
env:
|
||||
TARGET: ${{ matrix.targets[0] }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Build
|
||||
run: make --directory=cmake/ci ${TARGET}_build
|
||||
- name: Test
|
||||
run: make --directory=cmake/ci ${TARGET}_test
|
||||
Generated
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
name: amd64 FreeBSD CMake
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
schedule:
|
||||
# min hours day(month) month day(week)
|
||||
- cron: '0 0 7,22 * *'
|
||||
|
||||
jobs:
|
||||
# Only MacOS hosted runner provides virtualisation with vagrant/virtualbox installed.
|
||||
# see: https://github.com/actions/virtual-environments/tree/main/images/macos
|
||||
make:
|
||||
runs-on: macos-10.15
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: vagrant version
|
||||
run: Vagrant --version
|
||||
- name: VirtualBox version
|
||||
run: virtualbox -h
|
||||
- name: Build
|
||||
run: cd cmake/ci/vagrant/freebsd && vagrant up
|
||||
Generated
Vendored
+26
@@ -0,0 +1,26 @@
|
||||
name: amd64 Linux Bazel
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
schedule:
|
||||
# min hours day(month) month day(week)
|
||||
- cron: '0 0 7,22 * *'
|
||||
|
||||
jobs:
|
||||
# Building using the github runner environement directly.
|
||||
bazel:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v2
|
||||
- name: Install Bazel
|
||||
run: |
|
||||
curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpg
|
||||
sudo mv bazel.gpg /etc/apt/trusted.gpg.d/
|
||||
echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
|
||||
sudo apt-get update
|
||||
sudo apt-get install bazel
|
||||
bazel --version
|
||||
- name: Test
|
||||
run: bazel test -s --verbose_failures //...
|
||||
Generated
Vendored
+31
@@ -0,0 +1,31 @@
|
||||
name: amd64 Linux CMake
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
schedule:
|
||||
# min hours day(month) month day(week)
|
||||
- cron: '0 0 7,22 * *'
|
||||
|
||||
jobs:
|
||||
# Building using the github runner environement directly.
|
||||
make:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Env
|
||||
run: make --directory=cmake/ci amd64_env
|
||||
- name: Devel
|
||||
run: make --directory=cmake/ci amd64_devel
|
||||
- name: Build
|
||||
run: make --directory=cmake/ci amd64_build
|
||||
- name: Test
|
||||
run: make --directory=cmake/ci amd64_test
|
||||
- name: Install Env
|
||||
run: make --directory=cmake/ci amd64_install_env
|
||||
- name: Install Devel
|
||||
run: make --directory=cmake/ci amd64_install_devel
|
||||
- name: Install Build
|
||||
run: make --directory=cmake/ci amd64_install_build
|
||||
- name: Install Test
|
||||
run: make --directory=cmake/ci amd64_install_test
|
||||
Generated
Vendored
+43
@@ -0,0 +1,43 @@
|
||||
name: amd64 MacOS CMake
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
schedule:
|
||||
# min hours day(month) month day(week)
|
||||
- cron: '0 0 7,22 * *'
|
||||
|
||||
jobs:
|
||||
# Building using the github runner environement directly.
|
||||
xcode:
|
||||
runs-on: macos-latest
|
||||
env:
|
||||
CTEST_OUTPUT_ON_FAILURE: 1
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Check cmake
|
||||
run: cmake --version
|
||||
- name: Configure
|
||||
run: cmake -S. -Bbuild -G "Xcode" -DCMAKE_CONFIGURATION_TYPES=Release
|
||||
- name: Build
|
||||
run: cmake --build build --config Release --target ALL_BUILD -v
|
||||
- name: Test
|
||||
run: cmake --build build --config Release --target RUN_TESTS -v
|
||||
- name: Install
|
||||
run: cmake --build build --config Release --target install -v
|
||||
make:
|
||||
runs-on: macos-latest
|
||||
env:
|
||||
CTEST_OUTPUT_ON_FAILURE: 1
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Check cmake
|
||||
run: cmake --version
|
||||
- name: Configure
|
||||
run: cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release
|
||||
- name: Build
|
||||
run: cmake --build build --target all -v
|
||||
- name: Test
|
||||
run: cmake --build build --target test -v
|
||||
- name: Install
|
||||
run: cmake --build build --target install -v
|
||||
Generated
Vendored
+25
@@ -0,0 +1,25 @@
|
||||
name: amd64 Windows CMake
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
schedule:
|
||||
# min hours day(month) month day(week)
|
||||
- cron: '0 0 7,22 * *'
|
||||
|
||||
jobs:
|
||||
# Building using the github runner environement directly.
|
||||
msvc:
|
||||
runs-on: windows-latest
|
||||
env:
|
||||
CTEST_OUTPUT_ON_FAILURE: 1
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Configure
|
||||
run: cmake -S. -Bbuild -G "Visual Studio 17 2022" -DCMAKE_CONFIGURATION_TYPES=Release
|
||||
- name: Build
|
||||
run: cmake --build build --config Release --target ALL_BUILD -- /maxcpucount
|
||||
- name: Test
|
||||
run: cmake --build build --config Release --target RUN_TESTS -- /maxcpucount
|
||||
- name: Install
|
||||
run: cmake --build build --config Release --target INSTALL -- /maxcpucount
|
||||
Generated
Vendored
+31
@@ -0,0 +1,31 @@
|
||||
name: ARM Linux CMake
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
schedule:
|
||||
# min hours day(month) month day(week)
|
||||
- cron: '0 0 7,22 * *'
|
||||
|
||||
jobs:
|
||||
# Building using the github runner environement directly.
|
||||
make:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
targets: [
|
||||
[arm-linux-gnueabihf],
|
||||
[armv8l-linux-gnueabihf],
|
||||
[arm-linux-gnueabi],
|
||||
[armeb-linux-gnueabihf],
|
||||
[armeb-linux-gnueabi]
|
||||
]
|
||||
fail-fast: false
|
||||
env:
|
||||
TARGET: ${{ matrix.targets[0] }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Build
|
||||
run: make --directory=cmake/ci ${TARGET}_build
|
||||
- name: Test
|
||||
run: make --directory=cmake/ci ${TARGET}_test
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
name: clang-format Check
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
# Building using the github runner environement directly.
|
||||
clang-format:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Fetch origin/main
|
||||
run: git fetch origin main
|
||||
- name: List of changed file(s)
|
||||
run: git diff --name-only FETCH_HEAD
|
||||
|
||||
- name: Build clang-format docker
|
||||
run: cd .github/workflows && docker build --tag=linter .
|
||||
- name: Check clang-format
|
||||
run: docker run --rm --init -v $(pwd):/repo linter:latest clang-format --version
|
||||
- name: clang-format help
|
||||
run: docker run --rm --init -v $(pwd):/repo linter:latest clang-format --help
|
||||
|
||||
- name: Check current commit
|
||||
run: docker run --rm --init -v $(pwd):/repo -w /repo linter:latest sh -c "git diff --diff-filter=d --name-only FETCH_HEAD | grep '\.c$\|\.h$\|\.cc$' | xargs clang-format --style=file --dry-run --Werror "
|
||||
Generated
Vendored
+30
@@ -0,0 +1,30 @@
|
||||
name: MIPS Linux CMake
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
schedule:
|
||||
# min hours day(month) month day(week)
|
||||
- cron: '0 0 7,22 * *'
|
||||
|
||||
jobs:
|
||||
# Building using the github runner environement directly.
|
||||
make:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
targets: [
|
||||
[mips32],
|
||||
[mips32el],
|
||||
[mips64],
|
||||
[mips64el]
|
||||
]
|
||||
fail-fast: false
|
||||
env:
|
||||
TARGET: ${{ matrix.targets[0] }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Build
|
||||
run: make --directory=cmake/ci ${TARGET}_build
|
||||
- name: Test
|
||||
run: make --directory=cmake/ci ${TARGET}_test
|
||||
Generated
Vendored
+29
@@ -0,0 +1,29 @@
|
||||
name: POWER Linux CMake
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
schedule:
|
||||
# min hours day(month) month day(week)
|
||||
- cron: '0 0 7,22 * *'
|
||||
|
||||
jobs:
|
||||
# Building using the github runner environement directly.
|
||||
make:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
targets: [
|
||||
[ppc],
|
||||
[ppc64],
|
||||
[ppc64le],
|
||||
]
|
||||
fail-fast: false
|
||||
env:
|
||||
TARGET: ${{ matrix.targets[0] }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Build
|
||||
run: make --directory=cmake/ci ${TARGET}_build
|
||||
- name: Test
|
||||
run: make --directory=cmake/ci ${TARGET}_test
|
||||
Generated
Vendored
+28
@@ -0,0 +1,28 @@
|
||||
name: RISCV Linux CMake
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
schedule:
|
||||
# min hours day(month) month day(week)
|
||||
- cron: '0 0 7,22 * *'
|
||||
|
||||
jobs:
|
||||
# Building using the github runner environement directly.
|
||||
make:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
targets: [
|
||||
[riscv32],
|
||||
[riscv64],
|
||||
]
|
||||
fail-fast: false
|
||||
env:
|
||||
TARGET: ${{ matrix.targets[0] }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Build
|
||||
run: make --directory=cmake/ci ${TARGET}_build
|
||||
- name: Test
|
||||
run: make --directory=cmake/ci ${TARGET}_test
|
||||
Generated
Vendored
+27
@@ -0,0 +1,27 @@
|
||||
name: s390x Linux CMake
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
schedule:
|
||||
# min hours day(month) month day(week)
|
||||
- cron: '0 0 7,22 * *'
|
||||
|
||||
jobs:
|
||||
# Building using the github runner environement directly.
|
||||
make:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
targets: [
|
||||
[s390x],
|
||||
]
|
||||
fail-fast: false
|
||||
env:
|
||||
TARGET: ${{ matrix.targets[0] }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Build
|
||||
run: make --directory=cmake/ci ${TARGET}_build
|
||||
- name: Test
|
||||
run: make --directory=cmake/ci ${TARGET}_test
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
---
|
||||
dataSource: "prs"
|
||||
ignoreLabels:
|
||||
- "Apple M1"
|
||||
- "duplicate"
|
||||
- "help wanted"
|
||||
- "invalid"
|
||||
- "question"
|
||||
- "wontfix"
|
||||
onlyMilestones: false
|
||||
groupBy:
|
||||
"API Change":
|
||||
- "API Change"
|
||||
"New features / Enhancements":
|
||||
- "enhancement"
|
||||
- "internal"
|
||||
"Bug Fixes":
|
||||
- "bug"
|
||||
"Misc":
|
||||
- "misc"
|
||||
changelogFilename: "CHANGELOG.md"
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
# Build folders
|
||||
build/
|
||||
cmake_build/
|
||||
build_cross/
|
||||
cmake-build-*/
|
||||
out/
|
||||
|
||||
# IDEs / CI temp files
|
||||
.idea/
|
||||
.vagrant/
|
||||
.vscode/
|
||||
.vs/
|
||||
*.swp
|
||||
|
||||
# Bazel artifacts
|
||||
**/bazel-*
|
||||
|
||||
# Per-user bazelrc files
|
||||
user.bazelrc
|
||||
+329
@@ -0,0 +1,329 @@
|
||||
# cpu_features, a cross platform C99 library to get cpu features at runtime.
|
||||
|
||||
load("@bazel_skylib//lib:selects.bzl", "selects")
|
||||
load("//:bazel/platforms.bzl", "PLATFORM_CPU_ARM", "PLATFORM_CPU_ARM64", "PLATFORM_CPU_MIPS", "PLATFORM_CPU_PPC", "PLATFORM_CPU_X86_64")
|
||||
|
||||
package(
|
||||
default_visibility = ["//visibility:public"],
|
||||
licenses = ["notice"],
|
||||
)
|
||||
|
||||
exports_files(["LICENSE"])
|
||||
|
||||
INCLUDES = ["include"]
|
||||
|
||||
C99_FLAGS = [
|
||||
"-std=c99",
|
||||
"-Wall",
|
||||
"-Wextra",
|
||||
"-Wmissing-declarations",
|
||||
"-Wmissing-prototypes",
|
||||
"-Wno-implicit-fallthrough",
|
||||
"-Wno-unused-function",
|
||||
"-Wold-style-definition",
|
||||
"-Wshadow",
|
||||
"-Wsign-compare",
|
||||
"-Wstrict-prototypes",
|
||||
]
|
||||
|
||||
cc_library(
|
||||
name = "cpu_features_macros",
|
||||
copts = C99_FLAGS,
|
||||
includes = INCLUDES,
|
||||
textual_hdrs = ["include/cpu_features_macros.h"],
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "cpu_features_cache_info",
|
||||
copts = C99_FLAGS,
|
||||
includes = INCLUDES,
|
||||
textual_hdrs = ["include/cpu_features_cache_info.h"],
|
||||
deps = [":cpu_features_macros"],
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "bit_utils",
|
||||
copts = C99_FLAGS,
|
||||
includes = INCLUDES,
|
||||
textual_hdrs = ["include/internal/bit_utils.h"],
|
||||
deps = [":cpu_features_macros"],
|
||||
)
|
||||
|
||||
cc_test(
|
||||
name = "bit_utils_test",
|
||||
srcs = ["test/bit_utils_test.cc"],
|
||||
includes = INCLUDES,
|
||||
deps = [
|
||||
":bit_utils",
|
||||
"@com_google_googletest//:gtest_main",
|
||||
],
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "memory_utils",
|
||||
copts = C99_FLAGS,
|
||||
includes = INCLUDES,
|
||||
textual_hdrs = [
|
||||
"src/copy.inl",
|
||||
"src/equals.inl",
|
||||
],
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "string_view",
|
||||
srcs = [
|
||||
"src/string_view.c",
|
||||
],
|
||||
copts = C99_FLAGS,
|
||||
includes = INCLUDES,
|
||||
textual_hdrs = ["include/internal/string_view.h"],
|
||||
deps = [
|
||||
":cpu_features_macros",
|
||||
":memory_utils",
|
||||
],
|
||||
)
|
||||
|
||||
cc_test(
|
||||
name = "string_view_test",
|
||||
srcs = ["test/string_view_test.cc"],
|
||||
includes = INCLUDES,
|
||||
deps = [
|
||||
":string_view",
|
||||
"@com_google_googletest//:gtest_main",
|
||||
],
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "filesystem",
|
||||
srcs = ["src/filesystem.c"],
|
||||
copts = C99_FLAGS,
|
||||
includes = INCLUDES,
|
||||
textual_hdrs = ["include/internal/filesystem.h"],
|
||||
deps = [":cpu_features_macros"],
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "filesystem_for_testing",
|
||||
testonly = 1,
|
||||
srcs = [
|
||||
"src/filesystem.c",
|
||||
"test/filesystem_for_testing.cc",
|
||||
],
|
||||
hdrs = [
|
||||
"include/internal/filesystem.h",
|
||||
"test/filesystem_for_testing.h",
|
||||
],
|
||||
defines = ["CPU_FEATURES_MOCK_FILESYSTEM"],
|
||||
includes = INCLUDES,
|
||||
deps = [
|
||||
":cpu_features_macros",
|
||||
],
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "stack_line_reader",
|
||||
srcs = ["src/stack_line_reader.c"],
|
||||
copts = C99_FLAGS,
|
||||
defines = ["STACK_LINE_READER_BUFFER_SIZE=1024"],
|
||||
includes = INCLUDES,
|
||||
textual_hdrs = ["include/internal/stack_line_reader.h"],
|
||||
deps = [
|
||||
":cpu_features_macros",
|
||||
":filesystem",
|
||||
":string_view",
|
||||
],
|
||||
)
|
||||
|
||||
cc_test(
|
||||
name = "stack_line_reader_test",
|
||||
srcs = [
|
||||
"include/internal/stack_line_reader.h",
|
||||
"src/stack_line_reader.c",
|
||||
"test/stack_line_reader_test.cc",
|
||||
],
|
||||
defines = ["STACK_LINE_READER_BUFFER_SIZE=16"],
|
||||
includes = INCLUDES,
|
||||
deps = [
|
||||
":cpu_features_macros",
|
||||
":filesystem_for_testing",
|
||||
":string_view",
|
||||
"@com_google_googletest//:gtest_main",
|
||||
],
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "stack_line_reader_to_use_with_filesystem_for_testing",
|
||||
testonly = 1,
|
||||
srcs = ["src/stack_line_reader.c"],
|
||||
hdrs = ["include/internal/stack_line_reader.h"],
|
||||
copts = C99_FLAGS,
|
||||
defines = ["STACK_LINE_READER_BUFFER_SIZE=1024"],
|
||||
includes = INCLUDES,
|
||||
deps = [
|
||||
":cpu_features_macros",
|
||||
":filesystem_for_testing",
|
||||
":string_view",
|
||||
],
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "hwcaps",
|
||||
srcs = ["src/hwcaps.c"],
|
||||
copts = C99_FLAGS,
|
||||
defines = ["HAVE_STRONG_GETAUXVAL"],
|
||||
includes = INCLUDES,
|
||||
textual_hdrs = ["include/internal/hwcaps.h"],
|
||||
deps = [
|
||||
":cpu_features_macros",
|
||||
":filesystem",
|
||||
":string_view",
|
||||
],
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "hwcaps_for_testing",
|
||||
testonly = 1,
|
||||
srcs = [
|
||||
"src/hwcaps.c",
|
||||
"test/hwcaps_for_testing.cc",
|
||||
],
|
||||
hdrs = [
|
||||
"include/internal/hwcaps.h",
|
||||
"test/hwcaps_for_testing.h",
|
||||
],
|
||||
defines = [
|
||||
"CPU_FEATURES_MOCK_GET_ELF_HWCAP_FROM_GETAUXVAL",
|
||||
"CPU_FEATURES_TEST",
|
||||
],
|
||||
includes = INCLUDES,
|
||||
deps = [
|
||||
":cpu_features_macros",
|
||||
":filesystem_for_testing",
|
||||
":string_view",
|
||||
],
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "cpuinfo",
|
||||
srcs = selects.with_or({
|
||||
PLATFORM_CPU_X86_64: [
|
||||
"src/impl_x86_freebsd.c",
|
||||
"src/impl_x86_linux_or_android.c",
|
||||
"src/impl_x86_macos.c",
|
||||
"src/impl_x86_windows.c",
|
||||
],
|
||||
PLATFORM_CPU_ARM: ["src/impl_arm_linux_or_android.c"],
|
||||
PLATFORM_CPU_ARM64: ["src/impl_aarch64_linux_or_android.c"],
|
||||
PLATFORM_CPU_MIPS: ["src/impl_mips_linux_or_android.c"],
|
||||
PLATFORM_CPU_PPC: ["src/impl_ppc_linux.c"],
|
||||
}),
|
||||
copts = C99_FLAGS,
|
||||
includes = INCLUDES,
|
||||
textual_hdrs = selects.with_or({
|
||||
PLATFORM_CPU_X86_64: [
|
||||
"src/impl_x86__base_implementation.inl",
|
||||
"include/cpuinfo_x86.h",
|
||||
"include/internal/cpuid_x86.h",
|
||||
"include/internal/windows_utils.h",
|
||||
],
|
||||
PLATFORM_CPU_ARM: ["include/cpuinfo_arm.h"],
|
||||
PLATFORM_CPU_ARM64: ["include/cpuinfo_aarch64.h"],
|
||||
PLATFORM_CPU_MIPS: ["include/cpuinfo_mips.h"],
|
||||
PLATFORM_CPU_PPC: ["include/cpuinfo_ppc.h"],
|
||||
}) + [
|
||||
"src/define_introspection.inl",
|
||||
"src/define_introspection_and_hwcaps.inl",
|
||||
],
|
||||
deps = [
|
||||
":bit_utils",
|
||||
":cpu_features_cache_info",
|
||||
":cpu_features_macros",
|
||||
":filesystem",
|
||||
":hwcaps",
|
||||
":memory_utils",
|
||||
":stack_line_reader",
|
||||
":string_view",
|
||||
],
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "cpuinfo_for_testing",
|
||||
testonly = 1,
|
||||
srcs = selects.with_or({
|
||||
PLATFORM_CPU_X86_64: [
|
||||
"src/impl_x86_freebsd.c",
|
||||
"src/impl_x86_linux_or_android.c",
|
||||
"src/impl_x86_macos.c",
|
||||
"src/impl_x86_windows.c",
|
||||
],
|
||||
PLATFORM_CPU_ARM: ["src/impl_arm_linux_or_android.c"],
|
||||
PLATFORM_CPU_ARM64: ["src/impl_aarch64_linux_or_android.c"],
|
||||
PLATFORM_CPU_MIPS: ["src/impl_mips_linux_or_android.c"],
|
||||
PLATFORM_CPU_PPC: ["src/impl_ppc_linux.c"],
|
||||
}),
|
||||
hdrs = selects.with_or({
|
||||
PLATFORM_CPU_X86_64: [
|
||||
"include/cpuinfo_x86.h",
|
||||
"include/internal/cpuid_x86.h",
|
||||
"include/internal/windows_utils.h",
|
||||
],
|
||||
PLATFORM_CPU_ARM: ["include/cpuinfo_arm.h"],
|
||||
PLATFORM_CPU_ARM64: ["include/cpuinfo_aarch64.h"],
|
||||
PLATFORM_CPU_MIPS: ["include/cpuinfo_mips.h"],
|
||||
PLATFORM_CPU_PPC: ["include/cpuinfo_ppc.h"],
|
||||
}),
|
||||
copts = C99_FLAGS,
|
||||
defines = selects.with_or({
|
||||
PLATFORM_CPU_X86_64: ["CPU_FEATURES_MOCK_CPUID_X86"],
|
||||
"//conditions:default": [],
|
||||
}),
|
||||
includes = INCLUDES,
|
||||
textual_hdrs = selects.with_or({
|
||||
PLATFORM_CPU_X86_64: ["src/impl_x86__base_implementation.inl"],
|
||||
"//conditions:default": [],
|
||||
}) + [
|
||||
"src/define_introspection.inl",
|
||||
"src/define_introspection_and_hwcaps.inl",
|
||||
],
|
||||
deps = [
|
||||
":bit_utils",
|
||||
":cpu_features_cache_info",
|
||||
":cpu_features_macros",
|
||||
":filesystem_for_testing",
|
||||
":hwcaps_for_testing",
|
||||
":memory_utils",
|
||||
":stack_line_reader_to_use_with_filesystem_for_testing",
|
||||
":string_view",
|
||||
],
|
||||
)
|
||||
|
||||
cc_test(
|
||||
name = "cpuinfo_test",
|
||||
srcs = selects.with_or({
|
||||
PLATFORM_CPU_ARM64: ["test/cpuinfo_aarch64_test.cc"],
|
||||
PLATFORM_CPU_ARM: ["test/cpuinfo_arm_test.cc"],
|
||||
PLATFORM_CPU_MIPS: ["test/cpuinfo_mips_test.cc"],
|
||||
PLATFORM_CPU_PPC: ["test/cpuinfo_ppc_test.cc"],
|
||||
PLATFORM_CPU_X86_64: ["test/cpuinfo_x86_test.cc"],
|
||||
}),
|
||||
includes = INCLUDES,
|
||||
deps = [
|
||||
":cpuinfo_for_testing",
|
||||
":filesystem_for_testing",
|
||||
":hwcaps_for_testing",
|
||||
":string_view",
|
||||
"@com_google_googletest//:gtest_main",
|
||||
],
|
||||
)
|
||||
|
||||
cc_binary(
|
||||
name = "list_cpu_features",
|
||||
srcs = ["src/utils/list_cpu_features.c"],
|
||||
copts = C99_FLAGS,
|
||||
includes = INCLUDES,
|
||||
deps = [
|
||||
":bit_utils",
|
||||
":cpu_features_macros",
|
||||
":cpuinfo",
|
||||
],
|
||||
)
|
||||
+261
@@ -0,0 +1,261 @@
|
||||
cmake_minimum_required(VERSION 3.19.2)
|
||||
|
||||
# option() honors normal variables.
|
||||
# see: https://cmake.org/cmake/help/git-stage/policy/CMP0077.html
|
||||
if(POLICY CMP0077)
|
||||
cmake_policy(SET CMP0077 NEW)
|
||||
endif()
|
||||
|
||||
project(CpuFeatures VERSION 0.8.0 LANGUAGES C)
|
||||
|
||||
set(CMAKE_C_STANDARD 99)
|
||||
|
||||
# Default Build Type to be Release
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE "Release" CACHE STRING
|
||||
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
|
||||
FORCE)
|
||||
endif(NOT CMAKE_BUILD_TYPE)
|
||||
|
||||
# BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to make
|
||||
# it prominent in the GUI.
|
||||
# cpu_features uses bit-fields which are - to some extends - implementation-defined (see https://en.cppreference.com/w/c/language/bit_field).
|
||||
# As a consequence it is discouraged to use cpu_features as a shared library because different compilers may interpret the code in different ways.
|
||||
# Prefer static linking from source whenever possible.
|
||||
option(BUILD_SHARED_LIBS "Build library as shared." OFF)
|
||||
|
||||
# Force PIC on unix when building shared libs
|
||||
# see: https://en.wikipedia.org/wiki/Position-independent_code
|
||||
if(BUILD_SHARED_LIBS AND UNIX)
|
||||
option(CMAKE_POSITION_INDEPENDENT_CODE "Build with Position Independant Code." ON)
|
||||
endif()
|
||||
|
||||
include(CheckIncludeFile)
|
||||
include(CheckSymbolExists)
|
||||
include(GNUInstallDirs)
|
||||
|
||||
macro(setup_include_and_definitions TARGET_NAME)
|
||||
target_include_directories(${TARGET_NAME}
|
||||
PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
|
||||
PRIVATE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include/internal>
|
||||
)
|
||||
target_compile_definitions(${TARGET_NAME}
|
||||
PUBLIC STACK_LINE_READER_BUFFER_SIZE=1024
|
||||
)
|
||||
endmacro()
|
||||
|
||||
set(PROCESSOR_IS_MIPS FALSE)
|
||||
set(PROCESSOR_IS_ARM FALSE)
|
||||
set(PROCESSOR_IS_AARCH64 FALSE)
|
||||
set(PROCESSOR_IS_X86 FALSE)
|
||||
set(PROCESSOR_IS_POWER FALSE)
|
||||
set(PROCESSOR_IS_S390X FALSE)
|
||||
set(PROCESSOR_IS_RISCV FALSE)
|
||||
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^mips")
|
||||
set(PROCESSOR_IS_MIPS TRUE)
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)")
|
||||
set(PROCESSOR_IS_AARCH64 TRUE)
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
|
||||
set(PROCESSOR_IS_ARM TRUE)
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64)|(AMD64|amd64)|(^i.86$)")
|
||||
set(PROCESSOR_IS_X86 TRUE)
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)")
|
||||
set(PROCESSOR_IS_POWER TRUE)
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(s390x)")
|
||||
set(PROCESSOR_IS_S390X TRUE)
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^riscv")
|
||||
set(PROCESSOR_IS_RISCV TRUE)
|
||||
endif()
|
||||
|
||||
macro(add_cpu_features_headers_and_sources HDRS_LIST_NAME SRCS_LIST_NAME)
|
||||
list(APPEND ${HDRS_LIST_NAME} ${PROJECT_SOURCE_DIR}/include/cpu_features_macros.h)
|
||||
list(APPEND ${HDRS_LIST_NAME} ${PROJECT_SOURCE_DIR}/include/cpu_features_cache_info.h)
|
||||
file(GLOB IMPL_SOURCES CONFIGURE_DEPENDS "${PROJECT_SOURCE_DIR}/src/impl_*.c")
|
||||
list(APPEND ${SRCS_LIST_NAME} ${IMPL_SOURCES})
|
||||
if(PROCESSOR_IS_MIPS)
|
||||
list(APPEND ${HDRS_LIST_NAME} ${PROJECT_SOURCE_DIR}/include/cpuinfo_mips.h)
|
||||
elseif(PROCESSOR_IS_ARM)
|
||||
list(APPEND ${HDRS_LIST_NAME} ${PROJECT_SOURCE_DIR}/include/cpuinfo_arm.h)
|
||||
elseif(PROCESSOR_IS_AARCH64)
|
||||
list(APPEND ${HDRS_LIST_NAME} ${PROJECT_SOURCE_DIR}/include/cpuinfo_aarch64.h)
|
||||
list(APPEND ${SRCS_LIST_NAME} ${PROJECT_SOURCE_DIR}/include/internal/windows_utils.h)
|
||||
elseif(PROCESSOR_IS_X86)
|
||||
list(APPEND ${HDRS_LIST_NAME} ${PROJECT_SOURCE_DIR}/include/cpuinfo_x86.h)
|
||||
list(APPEND ${SRCS_LIST_NAME} ${PROJECT_SOURCE_DIR}/include/internal/cpuid_x86.h)
|
||||
list(APPEND ${SRCS_LIST_NAME} ${PROJECT_SOURCE_DIR}/include/internal/windows_utils.h)
|
||||
elseif(PROCESSOR_IS_POWER)
|
||||
list(APPEND ${HDRS_LIST_NAME} ${PROJECT_SOURCE_DIR}/include/cpuinfo_ppc.h)
|
||||
elseif(PROCESSOR_IS_S390X)
|
||||
list(APPEND ${HDRS_LIST_NAME} ${PROJECT_SOURCE_DIR}/include/cpuinfo_s390x.h)
|
||||
elseif(PROCESSOR_IS_RISCV)
|
||||
list(APPEND ${HDRS_LIST_NAME} ${PROJECT_SOURCE_DIR}/include/cpuinfo_riscv.h)
|
||||
else()
|
||||
message(FATAL_ERROR "Unsupported architectures ${CMAKE_SYSTEM_PROCESSOR}")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
#
|
||||
# library : utils
|
||||
#
|
||||
|
||||
add_library(utils OBJECT
|
||||
${PROJECT_SOURCE_DIR}/include/internal/bit_utils.h
|
||||
${PROJECT_SOURCE_DIR}/include/internal/filesystem.h
|
||||
${PROJECT_SOURCE_DIR}/include/internal/stack_line_reader.h
|
||||
${PROJECT_SOURCE_DIR}/include/internal/string_view.h
|
||||
${PROJECT_SOURCE_DIR}/src/filesystem.c
|
||||
${PROJECT_SOURCE_DIR}/src/stack_line_reader.c
|
||||
${PROJECT_SOURCE_DIR}/src/string_view.c
|
||||
)
|
||||
setup_include_and_definitions(utils)
|
||||
|
||||
#
|
||||
# library : unix_based_hardware_detection
|
||||
#
|
||||
|
||||
if(UNIX)
|
||||
add_library(unix_based_hardware_detection OBJECT
|
||||
${PROJECT_SOURCE_DIR}/include/internal/hwcaps.h
|
||||
${PROJECT_SOURCE_DIR}/src/hwcaps.c
|
||||
)
|
||||
setup_include_and_definitions(unix_based_hardware_detection)
|
||||
check_include_file(dlfcn.h HAVE_DLFCN_H)
|
||||
if(HAVE_DLFCN_H)
|
||||
target_compile_definitions(unix_based_hardware_detection PRIVATE HAVE_DLFCN_H)
|
||||
endif()
|
||||
check_symbol_exists(getauxval "sys/auxv.h" HAVE_STRONG_GETAUXVAL)
|
||||
if(HAVE_STRONG_GETAUXVAL)
|
||||
target_compile_definitions(unix_based_hardware_detection PRIVATE HAVE_STRONG_GETAUXVAL)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#
|
||||
# library : cpu_features
|
||||
#
|
||||
set (CPU_FEATURES_HDRS)
|
||||
set (CPU_FEATURES_SRCS)
|
||||
add_cpu_features_headers_and_sources(CPU_FEATURES_HDRS CPU_FEATURES_SRCS)
|
||||
list(APPEND CPU_FEATURES_SRCS $<TARGET_OBJECTS:utils>)
|
||||
if(NOT PROCESSOR_IS_X86 AND UNIX)
|
||||
list(APPEND CPU_FEATURES_SRCS $<TARGET_OBJECTS:unix_based_hardware_detection>)
|
||||
endif()
|
||||
add_library(cpu_features ${CPU_FEATURES_HDRS} ${CPU_FEATURES_SRCS})
|
||||
set_target_properties(cpu_features PROPERTIES PUBLIC_HEADER "${CPU_FEATURES_HDRS}")
|
||||
setup_include_and_definitions(cpu_features)
|
||||
target_link_libraries(cpu_features PUBLIC ${CMAKE_DL_LIBS})
|
||||
target_include_directories(cpu_features
|
||||
PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/cpu_features>
|
||||
)
|
||||
if(PROCESSOR_IS_X86 OR PROCESSOR_IS_AARCH64)
|
||||
if(APPLE)
|
||||
target_compile_definitions(cpu_features PRIVATE HAVE_SYSCTLBYNAME)
|
||||
endif()
|
||||
endif()
|
||||
add_library(CpuFeature::cpu_features ALIAS cpu_features)
|
||||
|
||||
#
|
||||
# program : list_cpu_features
|
||||
#
|
||||
|
||||
add_executable(list_cpu_features ${PROJECT_SOURCE_DIR}/src/utils/list_cpu_features.c)
|
||||
target_link_libraries(list_cpu_features PRIVATE cpu_features)
|
||||
add_executable(CpuFeature::list_cpu_features ALIAS list_cpu_features)
|
||||
|
||||
#
|
||||
# ndk_compat
|
||||
#
|
||||
|
||||
if(ANDROID)
|
||||
add_subdirectory(ndk_compat)
|
||||
endif()
|
||||
|
||||
#
|
||||
# tests
|
||||
#
|
||||
|
||||
include(CTest)
|
||||
if(BUILD_TESTING)
|
||||
# Automatically incorporate googletest into the CMake Project if target not
|
||||
# found.
|
||||
enable_language(CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 14)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF) # prefer use of -std14 instead of -gnustd14
|
||||
|
||||
if(NOT TARGET gtest OR NOT TARGET gmock_main)
|
||||
# Download and unpack googletest at configure time.
|
||||
configure_file(
|
||||
cmake/googletest.CMakeLists.txt.in
|
||||
googletest-download/CMakeLists.txt
|
||||
)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download)
|
||||
|
||||
if(result)
|
||||
message(FATAL_ERROR "CMake step for googletest failed: ${result}")
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} --build .
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download)
|
||||
|
||||
if(result)
|
||||
message(FATAL_ERROR "Build step for googletest failed: ${result}")
|
||||
endif()
|
||||
|
||||
# Prevent overriding the parent project's compiler/linker settings on
|
||||
# Windows.
|
||||
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
||||
|
||||
# Add googletest directly to our build. This defines the gtest and
|
||||
# gtest_main targets.
|
||||
add_subdirectory(${CMAKE_BINARY_DIR}/googletest-src
|
||||
${CMAKE_BINARY_DIR}/googletest-build
|
||||
EXCLUDE_FROM_ALL)
|
||||
endif()
|
||||
|
||||
add_subdirectory(test)
|
||||
endif()
|
||||
|
||||
#
|
||||
# Install cpu_features and list_cpu_features
|
||||
#
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS cpu_features list_cpu_features
|
||||
EXPORT CpuFeaturesTargets
|
||||
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/cpu_features
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
)
|
||||
install(EXPORT CpuFeaturesTargets
|
||||
NAMESPACE CpuFeatures::
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/CpuFeatures
|
||||
COMPONENT Devel
|
||||
)
|
||||
include(CMakePackageConfigHelpers)
|
||||
configure_package_config_file(cmake/CpuFeaturesConfig.cmake.in
|
||||
"${PROJECT_BINARY_DIR}/CpuFeaturesConfig.cmake"
|
||||
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/CpuFeatures"
|
||||
NO_SET_AND_CHECK_MACRO
|
||||
NO_CHECK_REQUIRED_COMPONENTS_MACRO
|
||||
)
|
||||
write_basic_package_version_file(
|
||||
"${PROJECT_BINARY_DIR}/CpuFeaturesConfigVersion.cmake"
|
||||
COMPATIBILITY SameMajorVersion
|
||||
)
|
||||
install(
|
||||
FILES
|
||||
"${PROJECT_BINARY_DIR}/CpuFeaturesConfig.cmake"
|
||||
"${PROJECT_BINARY_DIR}/CpuFeaturesConfigVersion.cmake"
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/CpuFeatures"
|
||||
COMPONENT Devel
|
||||
)
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
# How to Contribute
|
||||
|
||||
We'd love to accept your patches and contributions to this project. There are
|
||||
just a few small guidelines you need to follow.
|
||||
|
||||
## Contributor License Agreement
|
||||
|
||||
Contributions to this project must be accompanied by a Contributor License
|
||||
Agreement. You (or your employer) retain the copyright to your contribution;
|
||||
this simply gives us permission to use and redistribute your contributions as
|
||||
part of the project. Head over to <https://cla.developers.google.com/> to see
|
||||
your current agreements on file or to sign a new one.
|
||||
|
||||
You generally only need to submit a CLA once, so if you've already submitted one
|
||||
(even if it was for a different project), you probably don't need to do it
|
||||
again.
|
||||
|
||||
## Code reviews
|
||||
|
||||
All submissions, including submissions by project members, require review. We
|
||||
use GitHub pull requests for this purpose. Consult
|
||||
[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
|
||||
information on using pull requests.
|
||||
+230
@@ -0,0 +1,230 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
For files in the `ndk_compat` folder:
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Copyright (C) 2010 The Android Open Source Project
|
||||
All rights reserved.
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
+272
@@ -0,0 +1,272 @@
|
||||
# cpu_features
|
||||
|
||||
A cross-platform C library to retrieve CPU features (such as available
|
||||
instructions) at runtime.
|
||||
|
||||
# GitHub-CI Status
|
||||
|
||||
[comment]: <> (The following lines are generated by "scripts/generate_badges.d" that you can run online https://run.dlang.io/)
|
||||
|
||||
| Os | amd64 | AArch64 | ARM | MIPS | POWER | RISCV | s390x |
|
||||
| :-- | --: | --: | --: | --: | --: | --: | --: |
|
||||
| Linux | [![][i1a0]][l1a0]<br/>[![][i1a1]][l1a1] | [![][i1b0]][l1b0]<br/>![][d1] | [![][i1c0]][l1c0]<br/>![][d1] | [![][i1d0]][l1d0]<br/>![][d1] | [![][i1e0]][l1e0]<br/>![][d1] | [![][i1f0]][l1f0]<br/>![][d1] | [![][i1g0]][l1g0]<br/>![][d1] |
|
||||
| FreeBSD | [![][i2a0]][l2a0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] |
|
||||
| MacOS | [![][i3a0]][l3a0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] |
|
||||
| Windows | [![][i4a0]][l4a0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] | ![][d0]<br/>![][d1] |
|
||||
|
||||
[d0]: https://img.shields.io/badge/CMake-N%2FA-lightgrey
|
||||
[d1]: https://img.shields.io/badge/Bazel-N%2FA-lightgrey
|
||||
[i1a0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/amd64_linux_cmake.yml?branch=main&label=CMake
|
||||
[i1a1]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/amd64_linux_bazel.yml?branch=main&label=Bazel
|
||||
[i1b0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/aarch64_linux_cmake.yml?branch=main&label=CMake
|
||||
[i1c0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/arm_linux_cmake.yml?branch=main&label=CMake
|
||||
[i1d0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/mips_linux_cmake.yml?branch=main&label=CMake
|
||||
[i1e0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/power_linux_cmake.yml?branch=main&label=CMake
|
||||
[i1f0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/riscv_linux_cmake.yml?branch=main&label=CMake
|
||||
[i1g0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/s390x_linux_cmake.yml?branch=main&label=CMake
|
||||
[i2a0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/amd64_freebsd_cmake.yml?branch=main&label=CMake
|
||||
[i3a0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/amd64_macos_cmake.yml?branch=main&label=CMake
|
||||
[i4a0]: https://img.shields.io/github/actions/workflow/status/google/cpu_features/amd64_windows_cmake.yml?branch=main&label=CMake
|
||||
[l1a0]: https://github.com/google/cpu_features/actions/workflows/amd64_linux_cmake.yml
|
||||
[l1a1]: https://github.com/google/cpu_features/actions/workflows/amd64_linux_bazel.yml
|
||||
[l1b0]: https://github.com/google/cpu_features/actions/workflows/aarch64_linux_cmake.yml
|
||||
[l1c0]: https://github.com/google/cpu_features/actions/workflows/arm_linux_cmake.yml
|
||||
[l1d0]: https://github.com/google/cpu_features/actions/workflows/mips_linux_cmake.yml
|
||||
[l1e0]: https://github.com/google/cpu_features/actions/workflows/power_linux_cmake.yml
|
||||
[l1f0]: https://github.com/google/cpu_features/actions/workflows/riscv_linux_cmake.yml
|
||||
[l1g0]: https://github.com/google/cpu_features/actions/workflows/s390x_linux_cmake.yml
|
||||
[l2a0]: https://github.com/google/cpu_features/actions/workflows/amd64_freebsd_cmake.yml
|
||||
[l3a0]: https://github.com/google/cpu_features/actions/workflows/amd64_macos_cmake.yml
|
||||
[l4a0]: https://github.com/google/cpu_features/actions/workflows/amd64_windows_cmake.yml
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Design Rationale](#rationale)
|
||||
- [Code samples](#codesample)
|
||||
- [Running sample code](#usagesample)
|
||||
- [What's supported](#support)
|
||||
- [Android NDK's drop in replacement](#ndk)
|
||||
- [License](#license)
|
||||
- [Build with cmake](#cmake)
|
||||
- [Community Bindings](#bindings)
|
||||
|
||||
<a name="rationale"></a>
|
||||
## Design Rationale
|
||||
|
||||
- **Simple to use.** See the snippets below for examples.
|
||||
- **Extensible.** Easy to add missing features or architectures.
|
||||
- **Compatible with old compilers** and available on many architectures so it
|
||||
can be used widely. To ensure that cpu_features works on as many platforms
|
||||
as possible, we implemented it in a highly portable version of C: C99.
|
||||
- **Sandbox-compatible.** The library uses a variety of strategies to cope
|
||||
with sandboxed environments or when `cpuid` is unavailable. This is useful
|
||||
when running integration tests in hermetic environments.
|
||||
- **Thread safe, no memory allocation, and raises no exceptions.**
|
||||
cpu_features is suitable for implementing fundamental libc functions like
|
||||
`malloc`, `memcpy`, and `memcmp`.
|
||||
- **Unit tested.**
|
||||
|
||||
<a name="codesample"></a>
|
||||
## Code samples
|
||||
|
||||
**Note:** For C++ code, the library functions are defined in the `cpu_features` namespace.
|
||||
|
||||
### Checking features at runtime
|
||||
|
||||
Here's a simple example that executes a codepath if the CPU supports both the
|
||||
AES and the SSE4.2 instruction sets:
|
||||
|
||||
```c
|
||||
#include "cpuinfo_x86.h"
|
||||
|
||||
// For C++, add `using namespace cpu_features;`
|
||||
static const X86Features features = GetX86Info().features;
|
||||
|
||||
void Compute(void) {
|
||||
if (features.aes && features.sse4_2) {
|
||||
// Run optimized code.
|
||||
} else {
|
||||
// Run standard code.
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Caching for faster evaluation of complex checks
|
||||
|
||||
If you wish, you can read all the features at once into a global variable, and
|
||||
then query for the specific features you care about. Below, we store all the ARM
|
||||
features and then check whether AES and NEON are supported.
|
||||
|
||||
```c
|
||||
#include <stdbool.h>
|
||||
#include "cpuinfo_arm.h"
|
||||
|
||||
// For C++, add `using namespace cpu_features;`
|
||||
static const ArmFeatures features = GetArmInfo().features;
|
||||
static const bool has_aes_and_neon = features.aes && features.neon;
|
||||
|
||||
// use has_aes_and_neon.
|
||||
```
|
||||
|
||||
This is a good approach to take if you're checking for combinations of features
|
||||
when using a compiler that is slow to extract individual bits from bit-packed
|
||||
structures.
|
||||
|
||||
### Checking compile time flags
|
||||
|
||||
The following code determines whether the compiler was told to use the AVX
|
||||
instruction set (e.g., `g++ -mavx`) and sets `has_avx` accordingly.
|
||||
|
||||
```c
|
||||
#include <stdbool.h>
|
||||
#include "cpuinfo_x86.h"
|
||||
|
||||
// For C++, add `using namespace cpu_features;`
|
||||
static const X86Features features = GetX86Info().features;
|
||||
static const bool has_avx = CPU_FEATURES_COMPILED_X86_AVX || features.avx;
|
||||
|
||||
// use has_avx.
|
||||
```
|
||||
|
||||
`CPU_FEATURES_COMPILED_X86_AVX` is set to 1 if the compiler was instructed to
|
||||
use AVX and 0 otherwise, combining compile time and runtime knowledge.
|
||||
|
||||
### Rejecting poor hardware implementations based on microarchitecture
|
||||
|
||||
On x86, the first incarnation of a feature in a microarchitecture might not be
|
||||
the most efficient (e.g. AVX on Sandy Bridge). We provide a function to retrieve
|
||||
the underlying microarchitecture so you can decide whether to use it.
|
||||
|
||||
Below, `has_fast_avx` is set to 1 if the CPU supports the AVX instruction
|
||||
set—but only if it's not Sandy Bridge.
|
||||
|
||||
```c
|
||||
#include <stdbool.h>
|
||||
#include "cpuinfo_x86.h"
|
||||
|
||||
// For C++, add `using namespace cpu_features;`
|
||||
static const X86Info info = GetX86Info();
|
||||
static const X86Microarchitecture uarch = GetX86Microarchitecture(&info);
|
||||
static const bool has_fast_avx = info.features.avx && uarch != INTEL_SNB;
|
||||
|
||||
// use has_fast_avx.
|
||||
```
|
||||
|
||||
This feature is currently available only for x86 microarchitectures.
|
||||
|
||||
<a name="usagesample"></a>
|
||||
### Running sample code
|
||||
|
||||
Building `cpu_features` (check [quickstart](#quickstart) below) brings a small executable to test the library.
|
||||
|
||||
```shell
|
||||
% ./build/list_cpu_features
|
||||
arch : x86
|
||||
brand : Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz
|
||||
family : 6 (0x06)
|
||||
model : 45 (0x2D)
|
||||
stepping : 7 (0x07)
|
||||
uarch : INTEL_SNB
|
||||
flags : aes,avx,cx16,smx,sse4_1,sse4_2,ssse3
|
||||
```
|
||||
|
||||
```shell
|
||||
% ./build/list_cpu_features --json
|
||||
{"arch":"x86","brand":" Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz","family":6,"model":45,"stepping":7,"uarch":"INTEL_SNB","flags":["aes","avx","cx16","smx","sse4_1","sse4_2","ssse3"]}
|
||||
```
|
||||
|
||||
<a name="support"></a>
|
||||
## What's supported
|
||||
|
||||
| | x86³ | AArch64 | ARM | MIPS⁴ | POWER | RISCV | s390x |
|
||||
|---------|:----:|:-------:|:-------:|:-------:|:-------:|:-------:|:-------:|
|
||||
| Linux | yes² | yes¹ | yes¹ | yes¹ | yes¹ | yes¹ | yes¹ |
|
||||
| FreeBSD | yes² | not yet | not yet | not yet | not yet | N/A | not yet |
|
||||
| MacOs | yes² | not yet | N/A | N/A | no | N/A | no |
|
||||
| Windows | yes² | not yet | not yet | N/A | N/A | N/A | N/A |
|
||||
| Android | yes² | yes¹ | yes¹ | yes¹ | N/A | N/A | N/A |
|
||||
| iOS | N/A | not yet | not yet | N/A | N/A | N/A | N/A |
|
||||
|
||||
1. **Features revealed from Linux.** We gather data from several sources
|
||||
depending on availability:
|
||||
+ from glibc's
|
||||
[getauxval](https://www.gnu.org/software/libc/manual/html_node/Auxiliary-Vector.html)
|
||||
+ by parsing `/proc/self/auxv`
|
||||
+ by parsing `/proc/cpuinfo`
|
||||
2. **Features revealed from CPU.** features are retrieved by using the `cpuid`
|
||||
instruction.
|
||||
3. **Microarchitecture detection.** On x86 some features are not always
|
||||
implemented efficiently in hardware (e.g. AVX on Sandybridge). Exposing the
|
||||
microarchitecture allows the client to reject particular microarchitectures.
|
||||
4. All flavors of Mips are supported, little and big endian as well as 32/64
|
||||
bits.
|
||||
|
||||
<a name="ndk"></a>
|
||||
## Android NDK's drop in replacement
|
||||
|
||||
[cpu_features](https://github.com/google/cpu_features) is now officially
|
||||
supporting Android and offers a drop in replacement of for the NDK's [cpu-features.h](https://android.googlesource.com/platform/ndk/+/main/sources/android/cpufeatures/cpu-features.h)
|
||||
, see [ndk_compat](ndk_compat) folder for details.
|
||||
|
||||
<a name="license"></a>
|
||||
## License
|
||||
|
||||
The cpu_features library is licensed under the terms of the Apache license.
|
||||
See [LICENSE](LICENSE) for more information.
|
||||
|
||||
<a name="cmake"></a>
|
||||
## Build with CMake
|
||||
|
||||
Please check the [CMake build instructions](cmake/README.md).
|
||||
|
||||
<a name="quickstart"></a>
|
||||
### Quickstart
|
||||
|
||||
- Run `list_cpu_features`
|
||||
```sh
|
||||
cmake -S. -Bbuild -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release -j
|
||||
./build/list_cpu_features --json
|
||||
```
|
||||
|
||||
_Note_: Use `--target ALL_BUILD` on the second line for `Visual Studio` and `XCode`.
|
||||
|
||||
- run tests
|
||||
```sh
|
||||
cmake -S. -Bbuild -DBUILD_TESTING=ON -DCMAKE_BUILD_TYPE=Debug
|
||||
cmake --build build --config Debug -j
|
||||
cmake --build build --config Debug --target test
|
||||
```
|
||||
|
||||
_Note_: Use `--target RUN_TESTS` on the last line for `Visual Studio` and `--target RUN_TEST` for `XCode`.
|
||||
|
||||
|
||||
- install `cpu_features`
|
||||
```sh
|
||||
cmake --build build --config Release --target install -v
|
||||
```
|
||||
|
||||
_Note_: Use `--target INSTALL` for `Visual Studio`.
|
||||
|
||||
_Note_: When using `Makefile` or `XCode` generator, you can use
|
||||
[`DESTDIR`](https://www.gnu.org/software/make/manual/html_node/DESTDIR.html)
|
||||
to install on a local repository.<br>
|
||||
e.g.
|
||||
```sh
|
||||
cmake --build build --config Release --target install -v -- DESTDIR=install
|
||||
```
|
||||
|
||||
<a name="bindings"></a>
|
||||
## Community bindings
|
||||
|
||||
Links provided here are not affiliated with Google but are kindly provided by the OSS Community.
|
||||
|
||||
- .Net
|
||||
- https://github.com/toor1245/cpu_features.NET
|
||||
- Python
|
||||
- https://github.com/Narasimha1997/py_cpu
|
||||
- Java
|
||||
- https://github.com/aecsocket/cpu-features-java
|
||||
|
||||
|
||||
_Send PR to showcase your wrapper here_
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
workspace(name = "com_google_cpufeatures")
|
||||
|
||||
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
|
||||
|
||||
git_repository(
|
||||
name = "com_google_googletest",
|
||||
tag = "release-1.11.0",
|
||||
remote = "https://github.com/google/googletest.git",
|
||||
)
|
||||
|
||||
git_repository(
|
||||
name = "bazel_skylib",
|
||||
tag = "1.2.0",
|
||||
remote = "https://github.com/bazelbuild/bazel-skylib.git",
|
||||
)
|
||||
|
||||
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
|
||||
|
||||
bazel_skylib_workspace()
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
## Usage
|
||||
To build tests with bazel
|
||||
```sh
|
||||
bazel test -s --verbose_failures //...
|
||||
```
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
"""Defines global variables that lists target cpus"""
|
||||
|
||||
PLATFORM_CPU_X86_64 = ("@platforms//cpu:x86_64")
|
||||
|
||||
PLATFORM_CPU_ARM = ("@platforms//cpu:arm")
|
||||
|
||||
PLATFORM_CPU_ARM64 = ("@platforms//cpu:arm64")
|
||||
|
||||
PLATFORM_CPU_MIPS = ("@platforms//cpu:mips64")
|
||||
|
||||
PLATFORM_CPU_PPC = ("@platforms//cpu:ppc")
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
# CpuFeatures CMake configuration file
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/CpuFeaturesTargets.cmake")
|
||||
Generated
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
# CpuFeaturesNdkCompat CMake configuration file
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/CpuFeaturesNdkCompatTargets.cmake")
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
# CMake build instructions
|
||||
|
||||
## Recommended usage : Incorporating cpu_features into a CMake project
|
||||
|
||||
For API / ABI compatibility reasons, it is recommended to build and use
|
||||
cpu_features in a subdirectory of your project or as an embedded dependency.
|
||||
|
||||
This is similar to the recommended usage of the googletest framework
|
||||
( https://github.com/google/googletest/blob/main/googletest/README.md )
|
||||
|
||||
Build and use step-by-step
|
||||
|
||||
|
||||
1- Download cpu_features and copy it in a sub-directory in your project.
|
||||
or add cpu_features as a git-submodule in your project
|
||||
|
||||
2- You can then use the cmake command `add_subdirectory()` to include
|
||||
cpu_features directly and use the `cpu_features` target in your project.
|
||||
|
||||
3- Add the `CpuFeature::cpu_features` target to the `target_link_libraries()` section of
|
||||
your executable or of your library.
|
||||
|
||||
## Disabling tests
|
||||
|
||||
CMake default options for cpu_features is `Release` built type with tests
|
||||
enabled. To disable testing set cmake `BUILD_TESTING` variable to `OFF`.
|
||||
e.g.
|
||||
```sh
|
||||
cmake -S. -Bbuild -DBUILD_TESTING=OFF
|
||||
```
|
||||
+252
@@ -0,0 +1,252 @@
|
||||
PROJECT := cpu_features
|
||||
BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
|
||||
SHA1 := $(shell git rev-parse --verify HEAD)
|
||||
|
||||
# General commands
|
||||
.PHONY: help
|
||||
BOLD=\e[1m
|
||||
RESET=\e[0m
|
||||
|
||||
help:
|
||||
@echo -e "${BOLD}SYNOPSIS${RESET}"
|
||||
@echo -e "\tmake <target> [NOCACHE=1]"
|
||||
@echo
|
||||
@echo -e "${BOLD}DESCRIPTION${RESET}"
|
||||
@echo -e "\ttest build inside docker container to have a reproductible build."
|
||||
@echo
|
||||
@echo -e "${BOLD}MAKE TARGETS${RESET}"
|
||||
@echo -e "\t${BOLD}help${RESET}: display this help and exit."
|
||||
@echo
|
||||
@echo -e "\t${BOLD}amd64_<stage>${RESET}: build <stage> docker image using an Ubuntu:latest x86_64 base image."
|
||||
@echo -e "\t${BOLD}save_amd64_<stage>${RESET}: Save the <stage> docker image."
|
||||
@echo -e "\t${BOLD}sh_amd64_<stage>${RESET}: run a container using the <stage> docker image (debug purpose)."
|
||||
@echo -e "\t${BOLD}clean_amd64_<stage>${RESET}: Remove cache and docker image."
|
||||
@echo
|
||||
@echo -e "\tWith ${BOLD}<stage>${RESET}:"
|
||||
@echo -e "\t\t${BOLD}env${RESET}"
|
||||
@echo -e "\t\t${BOLD}devel${RESET}"
|
||||
@echo -e "\t\t${BOLD}build${RESET}"
|
||||
@echo -e "\t\t${BOLD}test${RESET}"
|
||||
@echo -e "\t\t${BOLD}install_env${RESET}"
|
||||
@echo -e "\t\t${BOLD}install_devel${RESET}"
|
||||
@echo -e "\t\t${BOLD}install_build${RESET}"
|
||||
@echo -e "\t\t${BOLD}install_test${RESET}"
|
||||
@echo -e "\te.g. 'make amd64_build'"
|
||||
@echo
|
||||
@echo -e "\t${BOLD}<target>_<toolchain_stage>${RESET}: build <stage> docker image for a specific toolchain target."
|
||||
@echo -e "\t${BOLD}save_<target>_<toolchain_stage>${RESET}: Save the <stage> docker image for a specific platform."
|
||||
@echo -e "\t${BOLD}sh_<target>_<toolchain_stage>${RESET}: run a container using the <stage> docker image specified (debug purpose)."
|
||||
@echo -e "\t${BOLD}clean_<target>_<toolchain_stage>${RESET}: Remove cache and docker image."
|
||||
@echo
|
||||
@echo -e "\tWith ${BOLD}<target>${RESET}:"
|
||||
@echo -e "\t\t${BOLD}arm-linux-gnueabihf${RESET} (linaro toolchain)"
|
||||
@echo -e "\t\t${BOLD}armv8l-linux-gnueabihf${RESET} (linaro toolchain)"
|
||||
@echo -e "\t\t${BOLD}arm-linux-gnueabi${RESET} (linaro toolchain)"
|
||||
@echo -e "\t\t${BOLD}armeb-linux-gnueabihf${RESET} (linaro toolchain)"
|
||||
@echo -e "\t\t${BOLD}armeb-linux-gnueabi${RESET} (linaro toolchain)"
|
||||
@echo -e "\t\t${BOLD}aarch64-linux-gnu${RESET} (linaro toolchain)"
|
||||
@echo -e "\t\t${BOLD}aarch64${RESET} (bootlin toolchain)"
|
||||
@echo -e "\t\t${BOLD}aarch64_be-linux-gnu${RESET} (linaro toolchain)"
|
||||
@echo -e "\t\t${BOLD}aarch64be${RESET} (bootlin toolchain)"
|
||||
@echo -e "\t\t${BOLD}mips32${RESET} (codespace toolchain)"
|
||||
@echo -e "\t\t${BOLD}mips64${RESET} (codespace toolchain)"
|
||||
@echo -e "\t\t${BOLD}mips32el${RESET} (codespace toolchain)"
|
||||
@echo -e "\t\t${BOLD}mips64el${RESET} (codespace toolchain)"
|
||||
@echo -e "\t\t${BOLD}ppc${RESET} (bootlin toolchain)"
|
||||
@echo -e "\t\t${BOLD}ppc64${RESET} (bootlin toolchain)"
|
||||
@echo -e "\t\t${BOLD}ppc64le${RESET} (bootlin toolchain)"
|
||||
@echo -e "\t\t${BOLD}riscv32${RESET} (bootlin toolchain)"
|
||||
@echo -e "\t\t${BOLD}riscv64${RESET} (bootlin toolchain)"
|
||||
@echo -e "\t\t${BOLD}s390x${RESET} (bootlin toolchain)"
|
||||
@echo
|
||||
@echo -e "\tWith ${BOLD}<toolchain_stage>${RESET}:"
|
||||
@echo -e "\t\t${BOLD}env${RESET}"
|
||||
@echo -e "\t\t${BOLD}devel${RESET}"
|
||||
@echo -e "\t\t${BOLD}build${RESET}"
|
||||
@echo -e "\t\t${BOLD}test${RESET}"
|
||||
@echo -e "\te.g. 'make aarch64_test'"
|
||||
@echo
|
||||
@echo -e "\t${BOLD}<VM>${RESET}: build the vagrant <VM> virtual machine."
|
||||
@echo -e "\t${BOLD}clean_<VM>${RESET}: Remove virtual machine for the specified vm."
|
||||
@echo
|
||||
@echo -e "\t${BOLD}<VM>${RESET}:"
|
||||
@echo -e "\t\t${BOLD}freebsd${RESET} (FreeBSD)"
|
||||
@echo
|
||||
@echo -e "\t${BOLD}clean${RESET}: Remove cache and ALL docker images."
|
||||
@echo
|
||||
@echo -e "\t${BOLD}NOCACHE=1${RESET}: use 'docker build --no-cache' when building container (default use cache)."
|
||||
@echo
|
||||
@echo -e "branch: $(BRANCH)"
|
||||
@echo -e "sha1: $(SHA1)"
|
||||
|
||||
# Need to add cmd_platform to PHONY otherwise target are ignored since they do not
|
||||
# contain recipe (using FORCE do not work here)
|
||||
.PHONY: all
|
||||
all: build
|
||||
|
||||
# Delete all implicit rules to speed up makefile
|
||||
MAKEFLAGS += --no-builtin-rules
|
||||
.SUFFIXES:
|
||||
# Remove some rules from gmake that .SUFFIXES does not remove.
|
||||
SUFFIXES =
|
||||
# Keep all intermediate files
|
||||
# ToDo: try to remove it later
|
||||
.SECONDARY:
|
||||
|
||||
# Docker image name prefix.
|
||||
IMAGE := ${PROJECT}
|
||||
|
||||
ifdef NOCACHE
|
||||
DOCKER_BUILD_CMD := docker build --no-cache
|
||||
else
|
||||
DOCKER_BUILD_CMD := docker build
|
||||
endif
|
||||
|
||||
DOCKER_RUN_CMD := docker run --rm --init --net=host
|
||||
|
||||
# $* stem
|
||||
# $< first prerequist
|
||||
# $@ target name
|
||||
|
||||
############
|
||||
## NATIVE ##
|
||||
############
|
||||
STAGES = env devel build test install_env install_devel install_build install_test
|
||||
|
||||
targets_amd64 = $(addprefix amd64_, $(STAGES))
|
||||
.PHONY: $(targets_amd64)
|
||||
$(targets_amd64): amd64_%: docker/amd64/Dockerfile
|
||||
#@docker image rm -f ${IMAGE}:amd64_$* 2>/dev/null
|
||||
${DOCKER_BUILD_CMD} \
|
||||
--tag ${IMAGE}:amd64_$* \
|
||||
--target=$* \
|
||||
-f $< \
|
||||
../..
|
||||
|
||||
#$(info Create targets: save_amd64 $(addprefix save_amd64_, $(STAGES)) (debug).)
|
||||
save_targets_amd64 = $(addprefix save_amd64_, $(STAGES))
|
||||
.PHONY: $(save_targets_amd64)
|
||||
$(save_targets_amd64): save_amd64_%: cache/amd64/docker_%.tar
|
||||
cache/amd64/docker_%.tar: amd64_%
|
||||
@rm -f $@
|
||||
mkdir -p cache/amd64
|
||||
docker save ${IMAGE}:amd64_$* -o $@
|
||||
|
||||
#$(info Create targets: $(addprefix sh_amd64_, $(STAGES)) (debug).)
|
||||
sh_targets_amd64 = $(addprefix sh_amd64_, $(STAGES))
|
||||
.PHONY: $(sh_targets_amd64)
|
||||
$(sh_targets_amd64): sh_amd64_%: amd64_%
|
||||
${DOCKER_RUN_CMD} -it --name ${IMAGE}_amd64_$* ${IMAGE}:amd64_$*
|
||||
|
||||
#$(info Create targets: $(addprefix clean_amd64_, $(STAGES)).)
|
||||
clean_targets_amd64 = $(addprefix clean_amd64_, $(STAGES))
|
||||
.PHONY: clean_amd64 $(clean_targets_amd64)
|
||||
clean_amd64: $(clean_targets_amd64)
|
||||
$(clean_targets_amd64): clean_amd64_%:
|
||||
docker image rm -f ${IMAGE}:amd64_$* 2>/dev/null
|
||||
rm -f cache/amd64/docker_$*.tar
|
||||
|
||||
|
||||
###############
|
||||
## TOOLCHAIN ##
|
||||
###############
|
||||
TOOLCHAIN_TARGETS = \
|
||||
aarch64 aarch64be \
|
||||
arm-linux-gnueabihf armv8l-linux-gnueabihf arm-linux-gnueabi armeb-linux-gnueabihf armeb-linux-gnueabi \
|
||||
aarch64-linux-gnu aarch64_be-linux-gnu \
|
||||
mips32 mips32el mips64 mips64el \
|
||||
ppc ppc64 ppc64le \
|
||||
riscv32 riscv64 \
|
||||
s390x
|
||||
TOOLCHAIN_STAGES = env devel build test
|
||||
define toolchain-stage-target =
|
||||
#$$(info STAGE: $1)
|
||||
#$$(info Create targets: toolchain_$1 $(addsuffix _$1, $(TOOLCHAIN_TARGETS)).)
|
||||
targets_toolchain_$1 = $(addsuffix _$1, $(TOOLCHAIN_TARGETS))
|
||||
.PHONY: toolchain_$1 $$(targets_toolchain_$1)
|
||||
toolchain_$1: $$(targets_toolchain_$1)
|
||||
$$(targets_toolchain_$1): %_$1: docker/toolchain/Dockerfile
|
||||
#@docker image rm -f ${IMAGE}:$$*_$1 2>/dev/null
|
||||
${DOCKER_BUILD_CMD} \
|
||||
--tag ${IMAGE}:$$*_$1 \
|
||||
--build-arg TARGET=$$* \
|
||||
--target=$1 \
|
||||
-f $$< \
|
||||
../..
|
||||
|
||||
#$$(info Create targets: save_toolchain_$1 $(addprefix save_, $(addsuffix _$1, $(TOOLCHAIN_TARGETS))) (debug).)
|
||||
save_targets_toolchain_$1 = $(addprefix save_, $(addsuffix _$1, $(TOOLCHAIN_TARGETS)))
|
||||
.PHONY: save_toolchain_$1 $$(save_targets_toolchain_$1)
|
||||
save_toolchain_$1: $$(save_targets_toolchain_$1)
|
||||
$$(save_targets_toolchain_$1): save_%_$1: cache/%/docker_$1.tar
|
||||
cache/%/docker_$1.tar: %_$1
|
||||
@rm -f $$@
|
||||
mkdir -p cache/$$*
|
||||
docker save ${IMAGE}:$$*_$1 -o $$@
|
||||
|
||||
#$$(info Create targets: $(addprefix sh_, $(addsuffix _$1, $(TOOLCHAIN_TARGETS))) (debug).)
|
||||
sh_targets_toolchain_$1 = $(addprefix sh_, $(addsuffix _$1, $(TOOLCHAIN_TARGETS)))
|
||||
.PHONY: $$(sh_targets_toolchain_$1)
|
||||
$$(sh_targets_toolchain_$1): sh_%_$1: %_$1
|
||||
${DOCKER_RUN_CMD} -it --name ${IMAGE}_$$*_$1 ${IMAGE}:$$*_$1
|
||||
|
||||
#$$(info Create targets: clean_toolchain_$1 $(addprefix clean_, $(addsuffix _$1, $(TOOLCHAIN_TARGETS))).)
|
||||
clean_targets_toolchain_$1 = $(addprefix clean_, $(addsuffix _$1, $(TOOLCHAIN_TARGETS)))
|
||||
.PHONY: clean_toolchain_$1 $$(clean_targets_toolchain_$1)
|
||||
clean_toolchain_$1: $$(clean_targets_toolchain_$1)
|
||||
$$(clean_targets_toolchain_$1): clean_%_$1:
|
||||
docker image rm -f ${IMAGE}:$$*_$1 2>/dev/null
|
||||
rm -f cache/$$*/docker_$1.tar
|
||||
endef
|
||||
|
||||
$(foreach stage,$(TOOLCHAIN_STAGES),$(eval $(call toolchain-stage-target,$(stage))))
|
||||
|
||||
## MERGE ##
|
||||
.PHONY: clean_toolchain
|
||||
clean_toolchain: $(addprefix clean_toolchain_, $(TOOLCHAIN_STAGES))
|
||||
-rmdir $(addprefix cache/, $(TOOLCHAIN_TARGETS))
|
||||
|
||||
.PHONY: env devel build test
|
||||
env: amd64_env toolchain_env
|
||||
devel: amd64_devel toolchain_devel
|
||||
build: amd64_build toolchain_build
|
||||
test: amd64_test toolchain_test
|
||||
|
||||
.PHONY: install_env install_devel install_build install_test
|
||||
install_env: amd64_install_env
|
||||
install_devel: amd64_install_devel
|
||||
install_build: amd64_install_build
|
||||
install_test: amd64_install_test
|
||||
|
||||
#############
|
||||
## VAGRANT ##
|
||||
#############
|
||||
VMS = freebsd
|
||||
|
||||
vms_targets = $(addsuffix _build, $(VMS))
|
||||
.PHONY: $(vms_targets)
|
||||
$(vms_targets): %_build: vagrant/%/Vagrantfile
|
||||
@cd vagrant/$* && vagrant destroy -f
|
||||
cd vagrant/$* && vagrant up
|
||||
|
||||
clean_vms_targets = $(addprefix clean_, $(VMS))
|
||||
.PHONY: clean_vms $(clean_vms_targets)
|
||||
clean_vms: $(clean_vms_targets)
|
||||
$(clean_vms_targets): clean_%:
|
||||
cd vagrant/$* && vagrant destroy -f
|
||||
-rm -rf vagrant/$*/.vagrant
|
||||
|
||||
###########
|
||||
## CLEAN ##
|
||||
###########
|
||||
.PHONY: clean
|
||||
clean: clean_amd64 clean_toolchain clean_vms
|
||||
docker container prune -f
|
||||
docker image prune -f
|
||||
-rmdir cache
|
||||
|
||||
.PHONY: distclean
|
||||
distclean: clean
|
||||
-docker container rm -f $$(docker container ls -aq)
|
||||
-docker image rm -f $$(docker image ls -aq)
|
||||
-vagrant box remove -f generic/freebsd12
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
## Makefile/Docker testing
|
||||
To test the build on various distro, we are using docker containers and a Makefile for orchestration.
|
||||
|
||||
pros:
|
||||
* You are independent of third party CI runner config
|
||||
(e.g. [github action virtual-environnments](https://github.com/actions/virtual-environments)).
|
||||
* You can run it locally on your linux system.
|
||||
* Most CI provide runners with docker and Makefile installed.
|
||||
|
||||
cons:
|
||||
* Only GNU/Linux distro supported.
|
||||
|
||||
### Usage
|
||||
To get the help simply type:
|
||||
```sh
|
||||
make
|
||||
```
|
||||
|
||||
note: you can also use from top directory
|
||||
```sh
|
||||
make --directory=cmake/ci
|
||||
```
|
||||
|
||||
### Example
|
||||
For example to test mips32 inside an container:
|
||||
```sh
|
||||
make mips32_test
|
||||
```
|
||||
|
||||
### Docker layers
|
||||
Dockerfile is splitted in several stages.
|
||||
|
||||

|
||||
|
||||
|
||||
## Makefile/Vagrant testing
|
||||
To test build for FreeBSD we are using Vagrant and VirtualBox box.
|
||||
|
||||
This is similar to the docker stuff but use `vagrant` as `docker` cli and
|
||||
VirtuaBox to replace the docker engine daemon.
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
@startdot
|
||||
digraph DockerDeps {
|
||||
//rankdir=BT;
|
||||
rankdir=TD;
|
||||
node [shape=cylinder, style="rounded,filled", color=black, fillcolor=royalblue];
|
||||
DISTRO_IMG [label="ubuntu:latest"];
|
||||
PKG [label="packages\ne.g. cmake, g++", shape=box3d];
|
||||
SRC [label="git repo", shape=folder];
|
||||
SPL [label="sample", shape=folder];
|
||||
|
||||
subgraph clusterDockerfile {
|
||||
ENV_IMG [label="cpu_features:amd64_env\nenv"];
|
||||
DEVEL_IMG [label="cpu_features:amd64_devel\ndevel"];
|
||||
BUILD_IMG [label="cpu_features:amd64_build\nbuild"];
|
||||
TEST_IMG [label="cpu_features:amd64_test\ntest"];
|
||||
INSTALL_ENV_IMG [label="cpu_features:amd64_install_env\ninstall_env"];
|
||||
INSTALL_DEVEL_IMG [label="cpu_features:amd64_install_devel\ninstall_devel"];
|
||||
INSTALL_BUILD_IMG [label="cpu_features:amd64_install_build\ninstall_build"];
|
||||
INSTALL_TEST_IMG [label="cpu_features:amd64_install_test\ninstall_test"];
|
||||
|
||||
ENV_IMG -> DEVEL_IMG;
|
||||
DEVEL_IMG -> BUILD_IMG;
|
||||
BUILD_IMG -> TEST_IMG;
|
||||
|
||||
ENV_IMG -> INSTALL_ENV_IMG;
|
||||
BUILD_IMG -> INSTALL_ENV_IMG [label="copy install", style="dashed"];
|
||||
INSTALL_ENV_IMG -> INSTALL_DEVEL_IMG;
|
||||
SPL -> INSTALL_DEVEL_IMG [label="copy", style="dashed"];
|
||||
INSTALL_DEVEL_IMG -> INSTALL_BUILD_IMG;
|
||||
INSTALL_BUILD_IMG -> INSTALL_TEST_IMG;
|
||||
|
||||
color=royalblue;
|
||||
label = "docker/amd64/Dockerfile";
|
||||
}
|
||||
DISTRO_IMG -> ENV_IMG;
|
||||
PKG -> ENV_IMG [label="install", style="dashed"];
|
||||
SRC -> DEVEL_IMG [label="copy", style="dashed"];
|
||||
|
||||
subgraph clusterCache {
|
||||
node [shape=note, style="rounded,filled", color=black, fillcolor=royalblue];
|
||||
ENV_TAR [label="docker_amd64_env.tar"];
|
||||
DEVEL_TAR [label="docker_amd64_devel.tar"];
|
||||
BUILD_TAR [label="docker_amd64_build.tar"];
|
||||
TEST_TAR [label="docker_amd64_test.tar"];
|
||||
INSTALL_ENV_TAR [label="docker_amd64_install_env.tar"];
|
||||
INSTALL_DEVEL_TAR [label="docker_amd64_install_devel.tar"];
|
||||
INSTALL_BUILD_TAR [label="docker_amd64_install_build.tar"];
|
||||
INSTALL_TEST_TAR [label="docker_amd64_install_test.tar"];
|
||||
|
||||
edge [color=red];
|
||||
ENV_IMG -> ENV_TAR [label="make save_amd64_env"];
|
||||
DEVEL_IMG -> DEVEL_TAR [label="make save_amd64_devel"];
|
||||
BUILD_IMG -> BUILD_TAR [label="make save_amd64_build"];
|
||||
TEST_IMG -> TEST_TAR [label="make save_amd64_test"];
|
||||
INSTALL_ENV_IMG -> INSTALL_ENV_TAR [label="make save_amd64_install_env"];
|
||||
INSTALL_DEVEL_IMG -> INSTALL_DEVEL_TAR [label="make save_amd64_install_devel"];
|
||||
INSTALL_BUILD_IMG -> INSTALL_BUILD_TAR [label="make save_amd64_install_build"];
|
||||
INSTALL_TEST_IMG -> INSTALL_TEST_TAR [label="make save_amd64_install_test"];
|
||||
|
||||
color=royalblue;
|
||||
label = "cache/amd64/";
|
||||
}
|
||||
}
|
||||
@enddot
|
||||
+312
@@ -0,0 +1,312 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.49.2 (0)
|
||||
-->
|
||||
<!-- Title: DockerDeps Pages: 1 -->
|
||||
<svg width="1904pt" height="900pt"
|
||||
viewBox="0.00 0.00 1904.00 899.75" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 895.75)">
|
||||
<title>DockerDeps</title>
|
||||
<polygon fill="white" stroke="transparent" points="-4,4 -4,-895.75 1900,-895.75 1900,4 -4,4"/>
|
||||
<g id="clust1" class="cluster">
|
||||
<title>clusterDockerfile</title>
|
||||
<polygon fill="none" stroke="royalblue" points="691,-116 691,-812.75 1253,-812.75 1253,-116 691,-116"/>
|
||||
<text text-anchor="middle" x="972" y="-797.55" font-family="Times,serif" font-size="14.00">docker/amd64/Dockerfile</text>
|
||||
</g>
|
||||
<g id="clust2" class="cluster">
|
||||
<title>clusterCache</title>
|
||||
<polygon fill="none" stroke="royalblue" points="8,-8 8,-83 1826,-83 1826,-8 8,-8"/>
|
||||
<text text-anchor="middle" x="917" y="-67.8" font-family="Times,serif" font-size="14.00">cache/amd64/</text>
|
||||
</g>
|
||||
<!-- DISTRO_IMG -->
|
||||
<g id="node1" class="node">
|
||||
<title>DISTRO_IMG</title>
|
||||
<path fill="royalblue" stroke="black" d="M893.5,-887.48C893.5,-889.28 868.18,-890.75 837,-890.75 805.82,-890.75 780.5,-889.28 780.5,-887.48 780.5,-887.48 780.5,-858.02 780.5,-858.02 780.5,-856.22 805.82,-854.75 837,-854.75 868.18,-854.75 893.5,-856.22 893.5,-858.02 893.5,-858.02 893.5,-887.48 893.5,-887.48"/>
|
||||
<path fill="none" stroke="black" d="M893.5,-887.48C893.5,-885.67 868.18,-884.2 837,-884.2 805.82,-884.2 780.5,-885.67 780.5,-887.48"/>
|
||||
<text text-anchor="middle" x="837" y="-869.05" font-family="Times,serif" font-size="14.00">ubuntu:latest</text>
|
||||
</g>
|
||||
<!-- ENV_IMG -->
|
||||
<g id="node5" class="node">
|
||||
<title>ENV_IMG</title>
|
||||
<path fill="royalblue" stroke="black" d="M1005,-777.1C1005,-779.74 961.52,-781.88 908,-781.88 854.48,-781.88 811,-779.74 811,-777.1 811,-777.1 811,-734.15 811,-734.15 811,-731.51 854.48,-729.37 908,-729.37 961.52,-729.37 1005,-731.51 1005,-734.15 1005,-734.15 1005,-777.1 1005,-777.1"/>
|
||||
<path fill="none" stroke="black" d="M1005,-777.1C1005,-774.47 961.52,-772.33 908,-772.33 854.48,-772.33 811,-774.47 811,-777.1"/>
|
||||
<text text-anchor="middle" x="908" y="-759.42" font-family="Times,serif" font-size="14.00">cpu_features:amd64_env</text>
|
||||
<text text-anchor="middle" x="908" y="-744.42" font-family="Times,serif" font-size="14.00">env</text>
|
||||
</g>
|
||||
<!-- DISTRO_IMG->ENV_IMG -->
|
||||
<g id="edge10" class="edge">
|
||||
<title>DISTRO_IMG->ENV_IMG</title>
|
||||
<path fill="none" stroke="black" d="M847.78,-854.26C858.17,-837.42 874.16,-811.49 887.05,-790.59"/>
|
||||
<polygon fill="black" stroke="black" points="890.09,-792.33 892.37,-781.98 884.14,-788.65 890.09,-792.33"/>
|
||||
</g>
|
||||
<!-- PKG -->
|
||||
<g id="node2" class="node">
|
||||
<title>PKG</title>
|
||||
<polygon fill="royalblue" stroke="black" points="1046.5,-891.75 915.5,-891.75 911.5,-887.75 911.5,-853.75 1042.5,-853.75 1046.5,-857.75 1046.5,-891.75"/>
|
||||
<polyline fill="none" stroke="black" points="1042.5,-887.75 911.5,-887.75 "/>
|
||||
<polyline fill="none" stroke="black" points="1042.5,-887.75 1042.5,-853.75 "/>
|
||||
<polyline fill="none" stroke="black" points="1042.5,-887.75 1046.5,-891.75 "/>
|
||||
<text text-anchor="middle" x="979" y="-876.55" font-family="Times,serif" font-size="14.00">packages</text>
|
||||
<text text-anchor="middle" x="979" y="-861.55" font-family="Times,serif" font-size="14.00">e.g. cmake, g++</text>
|
||||
</g>
|
||||
<!-- PKG->ENV_IMG -->
|
||||
<g id="edge11" class="edge">
|
||||
<title>PKG->ENV_IMG</title>
|
||||
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M967.75,-853.51C957.4,-836.72 941.77,-811.38 929.09,-790.83"/>
|
||||
<polygon fill="black" stroke="black" points="931.91,-788.73 923.69,-782.06 925.96,-792.41 931.91,-788.73"/>
|
||||
<text text-anchor="middle" x="978.5" y="-824.55" font-family="Times,serif" font-size="14.00">install</text>
|
||||
</g>
|
||||
<!-- SRC -->
|
||||
<g id="node3" class="node">
|
||||
<title>SRC</title>
|
||||
<polygon fill="royalblue" stroke="black" points="1334.5,-773.62 1331.5,-777.62 1310.5,-777.62 1307.5,-773.62 1261.5,-773.62 1261.5,-737.62 1334.5,-737.62 1334.5,-773.62"/>
|
||||
<text text-anchor="middle" x="1298" y="-751.92" font-family="Times,serif" font-size="14.00">git repo</text>
|
||||
</g>
|
||||
<!-- DEVEL_IMG -->
|
||||
<g id="node6" class="node">
|
||||
<title>DEVEL_IMG</title>
|
||||
<path fill="royalblue" stroke="black" d="M1189,-673.85C1189,-676.49 1142.83,-678.63 1086,-678.63 1029.17,-678.63 983,-676.49 983,-673.85 983,-673.85 983,-630.9 983,-630.9 983,-628.26 1029.17,-626.12 1086,-626.12 1142.83,-626.12 1189,-628.26 1189,-630.9 1189,-630.9 1189,-673.85 1189,-673.85"/>
|
||||
<path fill="none" stroke="black" d="M1189,-673.85C1189,-671.22 1142.83,-669.08 1086,-669.08 1029.17,-669.08 983,-671.22 983,-673.85"/>
|
||||
<text text-anchor="middle" x="1086" y="-656.17" font-family="Times,serif" font-size="14.00">cpu_features:amd64_devel</text>
|
||||
<text text-anchor="middle" x="1086" y="-641.17" font-family="Times,serif" font-size="14.00">devel</text>
|
||||
</g>
|
||||
<!-- SRC->DEVEL_IMG -->
|
||||
<g id="edge12" class="edge">
|
||||
<title>SRC->DEVEL_IMG</title>
|
||||
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1271.39,-737.62C1266.66,-734.8 1261.73,-731.99 1257,-729.5 1224.81,-712.57 1188.08,-695.89 1156.94,-682.48"/>
|
||||
<polygon fill="black" stroke="black" points="1158.03,-679.14 1147.46,-678.43 1155.28,-685.58 1158.03,-679.14"/>
|
||||
<text text-anchor="middle" x="1237" y="-700.3" font-family="Times,serif" font-size="14.00">copy</text>
|
||||
</g>
|
||||
<!-- SPL -->
|
||||
<g id="node4" class="node">
|
||||
<title>SPL</title>
|
||||
<polygon fill="royalblue" stroke="black" points="767,-477.88 764,-481.88 743,-481.88 740,-477.88 699,-477.88 699,-441.88 767,-441.88 767,-477.88"/>
|
||||
<text text-anchor="middle" x="733" y="-456.18" font-family="Times,serif" font-size="14.00">sample</text>
|
||||
</g>
|
||||
<!-- INSTALL_DEVEL_IMG -->
|
||||
<g id="node10" class="node">
|
||||
<title>INSTALL_DEVEL_IMG</title>
|
||||
<path fill="royalblue" stroke="black" d="M956.5,-378.1C956.5,-380.74 898.9,-382.88 828,-382.88 757.1,-382.88 699.5,-380.74 699.5,-378.1 699.5,-378.1 699.5,-335.15 699.5,-335.15 699.5,-332.51 757.1,-330.37 828,-330.37 898.9,-330.37 956.5,-332.51 956.5,-335.15 956.5,-335.15 956.5,-378.1 956.5,-378.1"/>
|
||||
<path fill="none" stroke="black" d="M956.5,-378.1C956.5,-375.47 898.9,-373.33 828,-373.33 757.1,-373.33 699.5,-375.47 699.5,-378.1"/>
|
||||
<text text-anchor="middle" x="828" y="-360.43" font-family="Times,serif" font-size="14.00">cpu_features:amd64_install_devel</text>
|
||||
<text text-anchor="middle" x="828" y="-345.43" font-family="Times,serif" font-size="14.00">install_devel</text>
|
||||
</g>
|
||||
<!-- SPL->INSTALL_DEVEL_IMG -->
|
||||
<g id="edge7" class="edge">
|
||||
<title>SPL->INSTALL_DEVEL_IMG</title>
|
||||
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M749.12,-441.7C762.24,-427.71 781.16,-407.54 797.18,-390.47"/>
|
||||
<polygon fill="black" stroke="black" points="800.02,-392.56 804.31,-382.87 794.91,-387.77 800.02,-392.56"/>
|
||||
<text text-anchor="middle" x="803" y="-404.55" font-family="Times,serif" font-size="14.00">copy</text>
|
||||
</g>
|
||||
<!-- ENV_IMG->DEVEL_IMG -->
|
||||
<g id="edge1" class="edge">
|
||||
<title>ENV_IMG->DEVEL_IMG</title>
|
||||
<path fill="none" stroke="black" d="M952.46,-729.34C976.87,-715.45 1007.3,-698.14 1032.95,-683.55"/>
|
||||
<polygon fill="black" stroke="black" points="1034.84,-686.5 1041.8,-678.52 1031.38,-680.42 1034.84,-686.5"/>
|
||||
</g>
|
||||
<!-- INSTALL_ENV_IMG -->
|
||||
<g id="node9" class="node">
|
||||
<title>INSTALL_ENV_IMG</title>
|
||||
<path fill="royalblue" stroke="black" d="M1030.5,-481.35C1030.5,-483.99 975.59,-486.13 908,-486.13 840.41,-486.13 785.5,-483.99 785.5,-481.35 785.5,-481.35 785.5,-438.4 785.5,-438.4 785.5,-435.76 840.41,-433.62 908,-433.62 975.59,-433.62 1030.5,-435.76 1030.5,-438.4 1030.5,-438.4 1030.5,-481.35 1030.5,-481.35"/>
|
||||
<path fill="none" stroke="black" d="M1030.5,-481.35C1030.5,-478.72 975.59,-476.58 908,-476.58 840.41,-476.58 785.5,-478.72 785.5,-481.35"/>
|
||||
<text text-anchor="middle" x="908" y="-463.68" font-family="Times,serif" font-size="14.00">cpu_features:amd64_install_env</text>
|
||||
<text text-anchor="middle" x="908" y="-448.68" font-family="Times,serif" font-size="14.00">install_env</text>
|
||||
</g>
|
||||
<!-- ENV_IMG->INSTALL_ENV_IMG -->
|
||||
<g id="edge4" class="edge">
|
||||
<title>ENV_IMG->INSTALL_ENV_IMG</title>
|
||||
<path fill="none" stroke="black" d="M908,-729.33C908,-676.94 908,-556.49 908,-496.37"/>
|
||||
<polygon fill="black" stroke="black" points="911.5,-496.22 908,-486.22 904.5,-496.22 911.5,-496.22"/>
|
||||
</g>
|
||||
<!-- ENV_TAR -->
|
||||
<g id="node13" class="node">
|
||||
<title>ENV_TAR</title>
|
||||
<polygon fill="royalblue" stroke="black" points="186,-52 16,-52 16,-16 192,-16 192,-46 186,-52"/>
|
||||
<polyline fill="none" stroke="black" points="186,-52 186,-46 "/>
|
||||
<polyline fill="none" stroke="black" points="192,-46 186,-46 "/>
|
||||
<text text-anchor="middle" x="104" y="-30.3" font-family="Times,serif" font-size="14.00">docker_amd64_env.tar</text>
|
||||
</g>
|
||||
<!-- ENV_IMG->ENV_TAR -->
|
||||
<g id="edge13" class="edge">
|
||||
<title>ENV_IMG->ENV_TAR</title>
|
||||
<path fill="none" stroke="red" d="M810.87,-751.31C609.47,-743.14 165,-717.82 165,-653.38 165,-653.38 165,-653.38 165,-149.12 165,-115.26 143.85,-81.71 126.46,-59.84"/>
|
||||
<polygon fill="red" stroke="red" points="129.09,-57.54 120.03,-52.05 123.7,-61.99 129.09,-57.54"/>
|
||||
<text text-anchor="middle" x="246.5" y="-404.55" font-family="Times,serif" font-size="14.00">make save_amd64_env</text>
|
||||
</g>
|
||||
<!-- BUILD_IMG -->
|
||||
<g id="node7" class="node">
|
||||
<title>BUILD_IMG</title>
|
||||
<path fill="royalblue" stroke="black" d="M1245,-584.6C1245,-587.24 1199.28,-589.38 1143,-589.38 1086.72,-589.38 1041,-587.24 1041,-584.6 1041,-584.6 1041,-541.65 1041,-541.65 1041,-539.01 1086.72,-536.87 1143,-536.87 1199.28,-536.87 1245,-539.01 1245,-541.65 1245,-541.65 1245,-584.6 1245,-584.6"/>
|
||||
<path fill="none" stroke="black" d="M1245,-584.6C1245,-581.97 1199.28,-579.83 1143,-579.83 1086.72,-579.83 1041,-581.97 1041,-584.6"/>
|
||||
<text text-anchor="middle" x="1143" y="-566.92" font-family="Times,serif" font-size="14.00">cpu_features:amd64_build</text>
|
||||
<text text-anchor="middle" x="1143" y="-551.92" font-family="Times,serif" font-size="14.00">build</text>
|
||||
</g>
|
||||
<!-- DEVEL_IMG->BUILD_IMG -->
|
||||
<g id="edge2" class="edge">
|
||||
<title>DEVEL_IMG->BUILD_IMG</title>
|
||||
<path fill="none" stroke="black" d="M1102.49,-626.14C1108.28,-617.28 1114.88,-607.17 1121.04,-597.73"/>
|
||||
<polygon fill="black" stroke="black" points="1124.01,-599.59 1126.55,-589.3 1118.15,-595.76 1124.01,-599.59"/>
|
||||
</g>
|
||||
<!-- DEVEL_TAR -->
|
||||
<g id="node14" class="node">
|
||||
<title>DEVEL_TAR</title>
|
||||
<polygon fill="royalblue" stroke="black" points="395.5,-52 210.5,-52 210.5,-16 401.5,-16 401.5,-46 395.5,-52"/>
|
||||
<polyline fill="none" stroke="black" points="395.5,-52 395.5,-46 "/>
|
||||
<polyline fill="none" stroke="black" points="401.5,-46 395.5,-46 "/>
|
||||
<text text-anchor="middle" x="306" y="-30.3" font-family="Times,serif" font-size="14.00">docker_amd64_devel.tar</text>
|
||||
</g>
|
||||
<!-- DEVEL_IMG->DEVEL_TAR -->
|
||||
<g id="edge14" class="edge">
|
||||
<title>DEVEL_IMG->DEVEL_TAR</title>
|
||||
<path fill="none" stroke="red" d="M982.94,-648.59C792.56,-642.05 405,-621.67 405,-564.12 405,-564.12 405,-564.12 405,-149.12 405,-110.26 371.83,-78.15 343.9,-58"/>
|
||||
<polygon fill="red" stroke="red" points="345.65,-54.96 335.44,-52.14 341.66,-60.71 345.65,-54.96"/>
|
||||
<text text-anchor="middle" x="493" y="-352.93" font-family="Times,serif" font-size="14.00">make save_amd64_devel</text>
|
||||
</g>
|
||||
<!-- TEST_IMG -->
|
||||
<g id="node8" class="node">
|
||||
<title>TEST_IMG</title>
|
||||
<path fill="royalblue" stroke="black" d="M1245,-481.35C1245,-483.99 1201.07,-486.13 1147,-486.13 1092.93,-486.13 1049,-483.99 1049,-481.35 1049,-481.35 1049,-438.4 1049,-438.4 1049,-435.76 1092.93,-433.62 1147,-433.62 1201.07,-433.62 1245,-435.76 1245,-438.4 1245,-438.4 1245,-481.35 1245,-481.35"/>
|
||||
<path fill="none" stroke="black" d="M1245,-481.35C1245,-478.72 1201.07,-476.58 1147,-476.58 1092.93,-476.58 1049,-478.72 1049,-481.35"/>
|
||||
<text text-anchor="middle" x="1147" y="-463.68" font-family="Times,serif" font-size="14.00">cpu_features:amd64_test</text>
|
||||
<text text-anchor="middle" x="1147" y="-448.68" font-family="Times,serif" font-size="14.00">test</text>
|
||||
</g>
|
||||
<!-- BUILD_IMG->TEST_IMG -->
|
||||
<g id="edge3" class="edge">
|
||||
<title>BUILD_IMG->TEST_IMG</title>
|
||||
<path fill="none" stroke="black" d="M1144,-536.84C1144.48,-524.63 1145.07,-509.79 1145.59,-496.47"/>
|
||||
<polygon fill="black" stroke="black" points="1149.1,-496.32 1146,-486.19 1142.11,-496.05 1149.1,-496.32"/>
|
||||
</g>
|
||||
<!-- BUILD_IMG->INSTALL_ENV_IMG -->
|
||||
<g id="edge5" class="edge">
|
||||
<title>BUILD_IMG->INSTALL_ENV_IMG</title>
|
||||
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1084.61,-536.97C1051.68,-522.78 1010.38,-504.99 976,-490.17"/>
|
||||
<polygon fill="black" stroke="black" points="977.07,-486.82 966.5,-486.08 974.3,-493.25 977.07,-486.82"/>
|
||||
<text text-anchor="middle" x="1080" y="-507.8" font-family="Times,serif" font-size="14.00">copy install</text>
|
||||
</g>
|
||||
<!-- BUILD_TAR -->
|
||||
<g id="node15" class="node">
|
||||
<title>BUILD_TAR</title>
|
||||
<polygon fill="royalblue" stroke="black" points="1812,-52 1630,-52 1630,-16 1818,-16 1818,-46 1812,-52"/>
|
||||
<polyline fill="none" stroke="black" points="1812,-52 1812,-46 "/>
|
||||
<polyline fill="none" stroke="black" points="1818,-46 1812,-46 "/>
|
||||
<text text-anchor="middle" x="1724" y="-30.3" font-family="Times,serif" font-size="14.00">docker_amd64_build.tar</text>
|
||||
</g>
|
||||
<!-- BUILD_IMG->BUILD_TAR -->
|
||||
<g id="edge15" class="edge">
|
||||
<title>BUILD_IMG->BUILD_TAR</title>
|
||||
<path fill="none" stroke="red" d="M1245.18,-554.53C1411.4,-540.79 1722,-508.71 1722,-460.88 1722,-460.88 1722,-460.88 1722,-149.12 1722,-119.36 1722.69,-85.23 1723.26,-62.11"/>
|
||||
<polygon fill="red" stroke="red" points="1726.76,-62.1 1723.52,-52.01 1719.76,-61.92 1726.76,-62.1"/>
|
||||
<text text-anchor="middle" x="1809" y="-301.3" font-family="Times,serif" font-size="14.00">make save_amd64_build</text>
|
||||
</g>
|
||||
<!-- TEST_TAR -->
|
||||
<g id="node16" class="node">
|
||||
<title>TEST_TAR</title>
|
||||
<polygon fill="royalblue" stroke="black" points="1606,-52 1432,-52 1432,-16 1612,-16 1612,-46 1606,-52"/>
|
||||
<polyline fill="none" stroke="black" points="1606,-52 1606,-46 "/>
|
||||
<polyline fill="none" stroke="black" points="1612,-46 1606,-46 "/>
|
||||
<text text-anchor="middle" x="1522" y="-30.3" font-family="Times,serif" font-size="14.00">docker_amd64_test.tar</text>
|
||||
</g>
|
||||
<!-- TEST_IMG->TEST_TAR -->
|
||||
<g id="edge16" class="edge">
|
||||
<title>TEST_IMG->TEST_TAR</title>
|
||||
<path fill="none" stroke="red" d="M1245.07,-451.87C1356.77,-441.13 1524,-415.4 1524,-357.62 1524,-357.62 1524,-357.62 1524,-149.12 1524,-119.36 1523.31,-85.23 1522.74,-62.11"/>
|
||||
<polygon fill="red" stroke="red" points="1526.24,-61.92 1522.48,-52.01 1519.24,-62.1 1526.24,-61.92"/>
|
||||
<text text-anchor="middle" x="1607" y="-249.68" font-family="Times,serif" font-size="14.00">make save_amd64_test</text>
|
||||
</g>
|
||||
<!-- INSTALL_ENV_IMG->INSTALL_DEVEL_IMG -->
|
||||
<g id="edge6" class="edge">
|
||||
<title>INSTALL_ENV_IMG->INSTALL_DEVEL_IMG</title>
|
||||
<path fill="none" stroke="black" d="M888.02,-433.59C877.81,-420.66 865.25,-404.76 854.26,-390.86"/>
|
||||
<polygon fill="black" stroke="black" points="856.95,-388.62 848,-382.94 851.46,-392.96 856.95,-388.62"/>
|
||||
</g>
|
||||
<!-- INSTALL_ENV_TAR -->
|
||||
<g id="node17" class="node">
|
||||
<title>INSTALL_ENV_TAR</title>
|
||||
<polygon fill="royalblue" stroke="black" points="1407.5,-52 1186.5,-52 1186.5,-16 1413.5,-16 1413.5,-46 1407.5,-52"/>
|
||||
<polyline fill="none" stroke="black" points="1407.5,-52 1407.5,-46 "/>
|
||||
<polyline fill="none" stroke="black" points="1413.5,-46 1407.5,-46 "/>
|
||||
<text text-anchor="middle" x="1300" y="-30.3" font-family="Times,serif" font-size="14.00">docker_amd64_install_env.tar</text>
|
||||
</g>
|
||||
<!-- INSTALL_ENV_IMG->INSTALL_ENV_TAR -->
|
||||
<g id="edge17" class="edge">
|
||||
<title>INSTALL_ENV_IMG->INSTALL_ENV_TAR</title>
|
||||
<path fill="none" stroke="red" d="M1012.88,-434.97C1121.03,-409.58 1274,-371.26 1274,-357.62 1274,-357.62 1274,-357.62 1274,-149.12 1274,-118.64 1282.93,-84.69 1290.32,-61.81"/>
|
||||
<polygon fill="red" stroke="red" points="1293.71,-62.72 1293.57,-52.12 1287.07,-60.49 1293.71,-62.72"/>
|
||||
<text text-anchor="middle" x="1381" y="-249.68" font-family="Times,serif" font-size="14.00">make save_amd64_install_env</text>
|
||||
</g>
|
||||
<!-- INSTALL_BUILD_IMG -->
|
||||
<g id="node11" class="node">
|
||||
<title>INSTALL_BUILD_IMG</title>
|
||||
<path fill="royalblue" stroke="black" d="M955.5,-274.85C955.5,-277.49 898.35,-279.63 828,-279.63 757.65,-279.63 700.5,-277.49 700.5,-274.85 700.5,-274.85 700.5,-231.9 700.5,-231.9 700.5,-229.26 757.65,-227.12 828,-227.12 898.35,-227.12 955.5,-229.26 955.5,-231.9 955.5,-231.9 955.5,-274.85 955.5,-274.85"/>
|
||||
<path fill="none" stroke="black" d="M955.5,-274.85C955.5,-272.22 898.35,-270.08 828,-270.08 757.65,-270.08 700.5,-272.22 700.5,-274.85"/>
|
||||
<text text-anchor="middle" x="828" y="-257.18" font-family="Times,serif" font-size="14.00">cpu_features:amd64_install_build</text>
|
||||
<text text-anchor="middle" x="828" y="-242.18" font-family="Times,serif" font-size="14.00">install_build</text>
|
||||
</g>
|
||||
<!-- INSTALL_DEVEL_IMG->INSTALL_BUILD_IMG -->
|
||||
<g id="edge8" class="edge">
|
||||
<title>INSTALL_DEVEL_IMG->INSTALL_BUILD_IMG</title>
|
||||
<path fill="none" stroke="black" d="M828,-330.34C828,-318.13 828,-303.29 828,-289.97"/>
|
||||
<polygon fill="black" stroke="black" points="831.5,-289.69 828,-279.69 824.5,-289.69 831.5,-289.69"/>
|
||||
</g>
|
||||
<!-- INSTALL_DEVEL_TAR -->
|
||||
<g id="node18" class="node">
|
||||
<title>INSTALL_DEVEL_TAR</title>
|
||||
<polygon fill="royalblue" stroke="black" points="656,-52 420,-52 420,-16 662,-16 662,-46 656,-52"/>
|
||||
<polyline fill="none" stroke="black" points="656,-52 656,-46 "/>
|
||||
<polyline fill="none" stroke="black" points="662,-46 656,-46 "/>
|
||||
<text text-anchor="middle" x="541" y="-30.3" font-family="Times,serif" font-size="14.00">docker_amd64_install_devel.tar</text>
|
||||
</g>
|
||||
<!-- INSTALL_DEVEL_IMG->INSTALL_DEVEL_TAR -->
|
||||
<g id="edge18" class="edge">
|
||||
<title>INSTALL_DEVEL_IMG->INSTALL_DEVEL_TAR</title>
|
||||
<path fill="none" stroke="red" d="M761.39,-330.48C708.37,-307.05 636.42,-266.99 595,-209.25 562.63,-164.12 549.27,-99.06 544.06,-62.54"/>
|
||||
<polygon fill="red" stroke="red" points="547.47,-61.64 542.7,-52.18 540.53,-62.55 547.47,-61.64"/>
|
||||
<text text-anchor="middle" x="708.5" y="-198.05" font-family="Times,serif" font-size="14.00">make save_amd64_install_devel</text>
|
||||
</g>
|
||||
<!-- INSTALL_TEST_IMG -->
|
||||
<g id="node12" class="node">
|
||||
<title>INSTALL_TEST_IMG</title>
|
||||
<path fill="royalblue" stroke="black" d="M948.5,-171.6C948.5,-174.24 893.15,-176.38 825,-176.38 756.85,-176.38 701.5,-174.24 701.5,-171.6 701.5,-171.6 701.5,-128.65 701.5,-128.65 701.5,-126.01 756.85,-123.87 825,-123.87 893.15,-123.87 948.5,-126.01 948.5,-128.65 948.5,-128.65 948.5,-171.6 948.5,-171.6"/>
|
||||
<path fill="none" stroke="black" d="M948.5,-171.6C948.5,-168.97 893.15,-166.83 825,-166.83 756.85,-166.83 701.5,-168.97 701.5,-171.6"/>
|
||||
<text text-anchor="middle" x="825" y="-153.93" font-family="Times,serif" font-size="14.00">cpu_features:amd64_install_test</text>
|
||||
<text text-anchor="middle" x="825" y="-138.93" font-family="Times,serif" font-size="14.00">install_test</text>
|
||||
</g>
|
||||
<!-- INSTALL_BUILD_IMG->INSTALL_TEST_IMG -->
|
||||
<g id="edge9" class="edge">
|
||||
<title>INSTALL_BUILD_IMG->INSTALL_TEST_IMG</title>
|
||||
<path fill="none" stroke="black" d="M827.25,-227.09C826.89,-214.88 826.45,-200.04 826.05,-186.72"/>
|
||||
<polygon fill="black" stroke="black" points="829.54,-186.33 825.75,-176.44 822.55,-186.54 829.54,-186.33"/>
|
||||
</g>
|
||||
<!-- INSTALL_BUILD_TAR -->
|
||||
<g id="node19" class="node">
|
||||
<title>INSTALL_BUILD_TAR</title>
|
||||
<polygon fill="royalblue" stroke="black" points="1162.5,-52 929.5,-52 929.5,-16 1168.5,-16 1168.5,-46 1162.5,-52"/>
|
||||
<polyline fill="none" stroke="black" points="1162.5,-52 1162.5,-46 "/>
|
||||
<polyline fill="none" stroke="black" points="1168.5,-46 1162.5,-46 "/>
|
||||
<text text-anchor="middle" x="1049" y="-30.3" font-family="Times,serif" font-size="14.00">docker_amd64_install_build.tar</text>
|
||||
</g>
|
||||
<!-- INSTALL_BUILD_IMG->INSTALL_BUILD_TAR -->
|
||||
<g id="edge19" class="edge">
|
||||
<title>INSTALL_BUILD_IMG->INSTALL_BUILD_TAR</title>
|
||||
<path fill="none" stroke="red" d="M882.76,-227.11C907.43,-214.09 935.91,-196.66 958,-176.25 994.16,-142.85 1022.19,-92.11 1037.09,-61.41"/>
|
||||
<polygon fill="red" stroke="red" points="1040.34,-62.72 1041.46,-52.19 1034.02,-59.72 1040.34,-62.72"/>
|
||||
<text text-anchor="middle" x="1117.5" y="-146.43" font-family="Times,serif" font-size="14.00">make save_amd64_install_build</text>
|
||||
</g>
|
||||
<!-- INSTALL_TEST_TAR -->
|
||||
<g id="node20" class="node">
|
||||
<title>INSTALL_TEST_TAR</title>
|
||||
<polygon fill="royalblue" stroke="black" points="905.5,-52 680.5,-52 680.5,-16 911.5,-16 911.5,-46 905.5,-52"/>
|
||||
<polyline fill="none" stroke="black" points="905.5,-52 905.5,-46 "/>
|
||||
<polyline fill="none" stroke="black" points="911.5,-46 905.5,-46 "/>
|
||||
<text text-anchor="middle" x="796" y="-30.3" font-family="Times,serif" font-size="14.00">docker_amd64_install_test.tar</text>
|
||||
</g>
|
||||
<!-- INSTALL_TEST_IMG->INSTALL_TEST_TAR -->
|
||||
<g id="edge20" class="edge">
|
||||
<title>INSTALL_TEST_IMG->INSTALL_TEST_TAR</title>
|
||||
<path fill="none" stroke="red" d="M799.99,-123.98C795.9,-118.47 792.26,-112.36 790,-106 785.07,-92.11 786.03,-75.77 788.46,-62.27"/>
|
||||
<polygon fill="red" stroke="red" points="791.96,-62.66 790.65,-52.15 785.12,-61.19 791.96,-62.66"/>
|
||||
<text text-anchor="middle" x="898.5" y="-94.8" font-family="Times,serif" font-size="14.00">make save_amd64_install_test</text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 21 KiB |
+7
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
set -ex
|
||||
|
||||
rm -f ./*.svg ./*.png
|
||||
for i in *.dot; do
|
||||
plantuml -Tsvg "$i";
|
||||
done
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
# Create a virtual environment with all tools installed
|
||||
# ref: https://hub.docker.com/_/ubuntu
|
||||
FROM ubuntu:latest AS env
|
||||
LABEL maintainer="corentinl@google.com"
|
||||
# Install system build dependencies
|
||||
ENV PATH=/usr/local/bin:$PATH
|
||||
RUN apt-get update -qq \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -yq git wget libssl-dev build-essential \
|
||||
ninja-build python3 pkgconf libglib2.0-dev \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
ENTRYPOINT ["/usr/bin/bash", "-c"]
|
||||
CMD ["/usr/bin/bash"]
|
||||
|
||||
# Install CMake 3.21.3
|
||||
RUN wget "https://cmake.org/files/v3.21/cmake-3.21.3-linux-x86_64.sh" \
|
||||
&& chmod a+x cmake-3.21.3-linux-x86_64.sh \
|
||||
&& ./cmake-3.21.3-linux-x86_64.sh --prefix=/usr/local/ --skip-license \
|
||||
&& rm cmake-3.21.3-linux-x86_64.sh
|
||||
|
||||
FROM env AS devel
|
||||
WORKDIR /home/project
|
||||
COPY . .
|
||||
|
||||
FROM devel AS build
|
||||
RUN cmake -version
|
||||
RUN cmake -S. -Bbuild
|
||||
RUN cmake --build build --target all -v
|
||||
RUN cmake --build build --target install -v
|
||||
|
||||
FROM build AS test
|
||||
ENV CTEST_OUTPUT_ON_FAILURE=1
|
||||
RUN cmake --build build --target test -v
|
||||
|
||||
# Test install rules
|
||||
FROM env AS install_env
|
||||
COPY --from=build /usr/local /usr/local/
|
||||
|
||||
FROM install_env AS install_devel
|
||||
WORKDIR /home/sample
|
||||
COPY cmake/ci/sample .
|
||||
|
||||
FROM install_devel AS install_build
|
||||
RUN cmake -S. -Bbuild
|
||||
RUN cmake --build build --target all -v
|
||||
|
||||
FROM install_build AS install_test
|
||||
RUN cmake --build build --target test
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
# Create a virtual environment with all tools installed
|
||||
# ref: https://hub.docker.com/_/ubuntu
|
||||
FROM ubuntu:latest AS env
|
||||
LABEL maintainer="corentinl@google.com"
|
||||
# Install system build dependencies
|
||||
ENV PATH=/usr/local/bin:$PATH
|
||||
RUN apt-get update -qq \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -yq git wget libssl-dev build-essential \
|
||||
ninja-build python3 pkgconf libglib2.0-dev \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
ENTRYPOINT ["/usr/bin/bash", "-c"]
|
||||
CMD ["/usr/bin/bash"]
|
||||
|
||||
# Install CMake 3.21.3
|
||||
RUN wget "https://cmake.org/files/v3.21/cmake-3.21.3-linux-x86_64.sh" \
|
||||
&& chmod a+x cmake-3.21.3-linux-x86_64.sh \
|
||||
&& ./cmake-3.21.3-linux-x86_64.sh --prefix=/usr/local/ --skip-license \
|
||||
&& rm cmake-3.21.3-linux-x86_64.sh
|
||||
|
||||
FROM env AS devel
|
||||
WORKDIR /home/project
|
||||
COPY . .
|
||||
|
||||
ARG TARGET
|
||||
ENV TARGET ${TARGET:-unknown}
|
||||
|
||||
FROM devel AS build
|
||||
RUN cmake -version
|
||||
RUN ./scripts/run_integration.sh build
|
||||
|
||||
FROM build AS test
|
||||
RUN ./scripts/run_integration.sh qemu
|
||||
RUN ./scripts/run_integration.sh test
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
cmake_minimum_required(VERSION 3.15)
|
||||
project(Sample VERSION 1.0.0 LANGUAGES CXX)
|
||||
|
||||
include(CTest)
|
||||
find_package(CpuFeatures REQUIRED)
|
||||
|
||||
add_executable(sample main.cpp)
|
||||
target_compile_features(sample PUBLIC cxx_std_11)
|
||||
set_target_properties(sample PROPERTIES
|
||||
CXX_STANDARD 11
|
||||
CXX_STANDARD_REQUIRED ON
|
||||
VERSION ${PROJECT_VERSION})
|
||||
target_link_libraries(sample PRIVATE CpuFeatures::cpu_features)
|
||||
|
||||
if(BUILD_TESTING)
|
||||
add_test(NAME sample_test COMMAND sample)
|
||||
endif()
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS sample
|
||||
EXPORT SampleTargets
|
||||
DESTINATION ${CMAKE_INSTALL_BIN_DIR})
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
#include <iostream>
|
||||
|
||||
#include "cpuinfo_x86.h"
|
||||
|
||||
using namespace cpu_features;
|
||||
|
||||
int main(int /*argc*/, char** /*argv*/) {
|
||||
static const X86Features features = GetX86Info().features;
|
||||
std::cout << std::endl;
|
||||
return 0;
|
||||
}
|
||||
+107
@@ -0,0 +1,107 @@
|
||||
# -*- mode: ruby -*-
|
||||
# vi: set ft=ruby :
|
||||
|
||||
# All Vagrant configuration is done below. The "2" in Vagrant.configure
|
||||
# configures the configuration version (we support older styles for
|
||||
# backwards compatibility). Please don't change it unless you know what
|
||||
# you're doing.
|
||||
Vagrant.configure("2") do |config|
|
||||
# The most common configuration options are documented and commented below.
|
||||
# For a complete reference, please see the online documentation at
|
||||
# https://docs.vagrantup.com.
|
||||
|
||||
# Every Vagrant development environment requires a box. You can search for
|
||||
# boxes at https://vagrantcloud.com/search.
|
||||
config.vm.guest = :freebsd
|
||||
config.vm.box = "generic/freebsd12"
|
||||
|
||||
config.ssh.shell = "sh"
|
||||
|
||||
# Disable automatic box update checking. If you disable this, then
|
||||
# boxes will only be checked for updates when the user runs
|
||||
# `vagrant box outdated`. This is not recommended.
|
||||
# config.vm.box_check_update = false
|
||||
|
||||
# Create a forwarded port mapping which allows access to a specific port
|
||||
# within the machine from a port on the host machine. In the example below,
|
||||
# accessing "localhost:8080" will access port 80 on the guest machine.
|
||||
# NOTE: This will enable public access to the opened port
|
||||
# config.vm.network "forwarded_port", guest: 80, host: 8080
|
||||
|
||||
# Create a forwarded port mapping which allows access to a specific port
|
||||
# within the machine from a port on the host machine and only allow access
|
||||
# via 127.0.0.1 to disable public access
|
||||
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
|
||||
|
||||
# Create a private network, which allows host-only access to the machine
|
||||
# using a specific IP.
|
||||
# config.vm.network "private_network", ip: "192.168.33.10"
|
||||
|
||||
# Create a public network, which generally matched to bridged network.
|
||||
# Bridged networks make the machine appear as another physical device on
|
||||
# your network.
|
||||
# config.vm.network "public_network"
|
||||
|
||||
# Share an additional folder to the guest VM. The first argument is
|
||||
# the path on the host to the actual folder. The second argument is
|
||||
# the path on the guest to mount the folder. And the optional third
|
||||
# argument is a set of non-required options.
|
||||
#config.vm.synced_folder "../../..", "/home/vagrant/project"
|
||||
config.vm.synced_folder ".", "/vagrant", id: "vagrant-root", disabled: true
|
||||
|
||||
config.vm.provision "file", source: "../../../../CMakeLists.txt", destination: "$HOME/project/"
|
||||
config.vm.provision "file", source: "../../../../cmake", destination: "$HOME/project/"
|
||||
config.vm.provision "file", source: "../../../../include", destination: "$HOME/project/"
|
||||
config.vm.provision "file", source: "../../../../src", destination: "$HOME/project/"
|
||||
config.vm.provision "file", source: "../../../../test", destination: "$HOME/project/"
|
||||
|
||||
# Provider-specific configuration so you can fine-tune various
|
||||
# backing providers for Vagrant. These expose provider-specific options.
|
||||
# Example for VirtualBox:
|
||||
#
|
||||
# config.vm.provider "virtualbox" do |vb|
|
||||
# # Display the VirtualBox GUI when booting the machine
|
||||
# vb.gui = true
|
||||
#
|
||||
# # Customize the amount of memory on the VM:
|
||||
# vb.memory = "1024"
|
||||
# end
|
||||
#
|
||||
# View the documentation for the provider you are using for more
|
||||
# information on available options.
|
||||
|
||||
# Enable provisioning with a shell script. Additional provisioners such as
|
||||
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
|
||||
# documentation for more information about their specific syntax and use.
|
||||
# note: clang installed by default
|
||||
config.vm.provision "env", type: "shell", inline:<<-SHELL
|
||||
set -x
|
||||
pkg update -f
|
||||
pkg install -y git cmake
|
||||
SHELL
|
||||
config.vm.provision "devel", type: "shell", inline:<<-SHELL
|
||||
set -x
|
||||
cd project
|
||||
ls
|
||||
SHELL
|
||||
config.vm.provision "configure", type: "shell", inline:<<-SHELL
|
||||
set -x
|
||||
cd project
|
||||
cmake -S. -Bbuild -DBUILD_TESTING=ON
|
||||
SHELL
|
||||
config.vm.provision "build", type: "shell", inline:<<-SHELL
|
||||
set -x
|
||||
cd project
|
||||
cmake --build build -v
|
||||
SHELL
|
||||
config.vm.provision "test", type: "shell", inline:<<-SHELL
|
||||
set -x
|
||||
cd project
|
||||
cmake --build build --target test -v
|
||||
SHELL
|
||||
config.vm.provision "test", type: "shell", inline:<<-SHELL
|
||||
set -x
|
||||
cd project
|
||||
cmake --build build --target install -v
|
||||
SHELL
|
||||
end
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
cmake_minimum_required(VERSION 2.8.2)
|
||||
|
||||
project(googletest-download NONE)
|
||||
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(googletest
|
||||
GIT_REPOSITORY https://github.com/google/googletest.git
|
||||
GIT_TAG main
|
||||
SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-src"
|
||||
BINARY_DIR "${CMAKE_BINARY_DIR}/googletest-build"
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
TEST_COMMAND ""
|
||||
)
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
{
|
||||
'targets': [
|
||||
{
|
||||
'target_name': 'cpu_features',
|
||||
'type': 'static_library',
|
||||
|
||||
'cflags': [ '-O3' ],
|
||||
|
||||
'include_dirs': [
|
||||
'include',
|
||||
'include/internal',
|
||||
],
|
||||
'sources': [
|
||||
'include/cpu_features_cache_info.h',
|
||||
'include/cpu_features_macros.h',
|
||||
|
||||
# platform-specific cpu checking implementations
|
||||
'src/impl_aarch64_linux_or_android.c',
|
||||
'src/impl_aarch64_macos_or_iphone.c',
|
||||
'src/impl_aarch64_windows.c',
|
||||
'src/impl_arm_linux_or_android.c',
|
||||
'src/impl_mips_linux_or_android.c',
|
||||
'src/impl_ppc_linux.c',
|
||||
'src/impl_x86_freebsd.c',
|
||||
'src/impl_x86_linux_or_android.c',
|
||||
'src/impl_x86_macos.c',
|
||||
'src/impl_x86_windows.c',
|
||||
|
||||
# utils
|
||||
'include/internal/bit_utils.h',
|
||||
'include/internal/filesystem.h',
|
||||
'include/internal/stack_line_reader.h',
|
||||
'include/internal/string_view.h',
|
||||
'src/filesystem.c',
|
||||
'src/stack_line_reader.c',
|
||||
'src/string_view.c',
|
||||
],
|
||||
'conditions': [
|
||||
['target_arch in "mips mipsel mips64 mips64el"', {
|
||||
'sources': [
|
||||
'include/cpuinfo_mips.h',
|
||||
],
|
||||
}],
|
||||
['target_arch=="arm"', {
|
||||
'sources': [
|
||||
'include/cpuinfo_arm.h',
|
||||
],
|
||||
}],
|
||||
['target_arch=="arm64"', {
|
||||
'sources': [
|
||||
'include/cpuinfo_aarch64.h',
|
||||
'include/internal/windows_utils.h',
|
||||
],
|
||||
}],
|
||||
['target_arch in "ia32 x32 x64"', {
|
||||
'sources': [
|
||||
'include/internal/cpuid_x86.h',
|
||||
'include/cpuinfo_x86.h',
|
||||
'include/internal/windows_utils.h',
|
||||
],
|
||||
}],
|
||||
['target_arch in "ppc ppc64"', {
|
||||
'sources': [
|
||||
'include/cpuinfo_ppc.h',
|
||||
],
|
||||
}],
|
||||
['target_arch in "s390x"', {
|
||||
'sources': [
|
||||
'include/cpuinfo_s390x.h',
|
||||
],
|
||||
}],
|
||||
['target_arch in "riscv64"', {
|
||||
'sources': [
|
||||
'include/cpuinfo_riscv.h',
|
||||
],
|
||||
}],
|
||||
|
||||
['OS=="mac" and target_arch in "ia32 x32 x64 arm64"', {
|
||||
'defines': [
|
||||
'HAVE_SYSCTLBYNAME=1',
|
||||
],
|
||||
}],
|
||||
],
|
||||
'defines': [
|
||||
'NDEBUG',
|
||||
'STACK_LINE_READER_BUFFER_SIZE=1024',
|
||||
],
|
||||
|
||||
# Use generated config
|
||||
'includes': [
|
||||
'../../buildcheck.gypi',
|
||||
],
|
||||
|
||||
'direct_dependent_settings': {
|
||||
'include_dirs': [
|
||||
'include',
|
||||
],
|
||||
'defines': [
|
||||
# Manually-tracked git revision
|
||||
'CPU_FEATURES_VERSION_REV=8a494eb1e158ec2050e5f699a504fbc9b896a43b',
|
||||
],
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
// Copyright 2017 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef CPU_FEATURES_INCLUDE_CPUINFO_COMMON_H_
|
||||
#define CPU_FEATURES_INCLUDE_CPUINFO_COMMON_H_
|
||||
|
||||
#include "cpu_features_macros.h"
|
||||
|
||||
CPU_FEATURES_START_CPP_NAMESPACE
|
||||
|
||||
typedef enum {
|
||||
CPU_FEATURE_CACHE_NULL = 0,
|
||||
CPU_FEATURE_CACHE_DATA = 1,
|
||||
CPU_FEATURE_CACHE_INSTRUCTION = 2,
|
||||
CPU_FEATURE_CACHE_UNIFIED = 3,
|
||||
CPU_FEATURE_CACHE_TLB = 4,
|
||||
CPU_FEATURE_CACHE_DTLB = 5,
|
||||
CPU_FEATURE_CACHE_STLB = 6,
|
||||
CPU_FEATURE_CACHE_PREFETCH = 7
|
||||
} CacheType;
|
||||
|
||||
typedef struct {
|
||||
int level;
|
||||
CacheType cache_type;
|
||||
int cache_size; // Cache size in bytes
|
||||
int ways; // Associativity, 0 undefined, 0xFF fully associative
|
||||
int line_size; // Cache line size in bytes
|
||||
int tlb_entries; // number of entries for TLB
|
||||
int partitioning; // number of lines per sector
|
||||
} CacheLevelInfo;
|
||||
|
||||
// Increase this value if more cache levels are needed.
|
||||
#ifndef CPU_FEATURES_MAX_CACHE_LEVEL
|
||||
#define CPU_FEATURES_MAX_CACHE_LEVEL 10
|
||||
#endif
|
||||
typedef struct {
|
||||
int size;
|
||||
CacheLevelInfo levels[CPU_FEATURES_MAX_CACHE_LEVEL];
|
||||
} CacheInfo;
|
||||
|
||||
CPU_FEATURES_END_CPP_NAMESPACE
|
||||
|
||||
#endif // CPU_FEATURES_INCLUDE_CPUINFO_COMMON_H_
|
||||
+384
@@ -0,0 +1,384 @@
|
||||
// Copyright 2017 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef CPU_FEATURES_INCLUDE_CPU_FEATURES_MACROS_H_
|
||||
#define CPU_FEATURES_INCLUDE_CPU_FEATURES_MACROS_H_
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Architectures
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if defined(__pnacl__) || defined(__CLR_VER)
|
||||
#define CPU_FEATURES_ARCH_VM
|
||||
#endif
|
||||
|
||||
#if (defined(_M_IX86) || defined(__i386__)) && !defined(CPU_FEATURES_ARCH_VM)
|
||||
#define CPU_FEATURES_ARCH_X86_32
|
||||
#endif
|
||||
|
||||
#if (defined(_M_X64) || defined(__x86_64__)) && !defined(CPU_FEATURES_ARCH_VM)
|
||||
#define CPU_FEATURES_ARCH_X86_64
|
||||
#endif
|
||||
|
||||
#if defined(CPU_FEATURES_ARCH_X86_32) || defined(CPU_FEATURES_ARCH_X86_64)
|
||||
#define CPU_FEATURES_ARCH_X86
|
||||
#endif
|
||||
|
||||
#if (defined(__arm__) || defined(_M_ARM))
|
||||
#define CPU_FEATURES_ARCH_ARM
|
||||
#endif
|
||||
|
||||
#if (defined(__aarch64__) || defined(__arm64__) || defined(_M_ARM64))
|
||||
#define CPU_FEATURES_ARCH_AARCH64
|
||||
#endif
|
||||
|
||||
#if (defined(CPU_FEATURES_ARCH_AARCH64) || defined(CPU_FEATURES_ARCH_ARM))
|
||||
#define CPU_FEATURES_ARCH_ANY_ARM
|
||||
#endif
|
||||
|
||||
#if defined(__mips64)
|
||||
#define CPU_FEATURES_ARCH_MIPS64
|
||||
#endif
|
||||
|
||||
#if defined(__mips__) && !defined(__mips64) // mips64 also declares __mips__
|
||||
#define CPU_FEATURES_ARCH_MIPS32
|
||||
#endif
|
||||
|
||||
#if defined(CPU_FEATURES_ARCH_MIPS32) || defined(CPU_FEATURES_ARCH_MIPS64)
|
||||
#define CPU_FEATURES_ARCH_MIPS
|
||||
#endif
|
||||
|
||||
#if defined(__powerpc__)
|
||||
#define CPU_FEATURES_ARCH_PPC
|
||||
#endif
|
||||
|
||||
#if defined(__s390x__)
|
||||
#define CPU_FEATURES_ARCH_S390X
|
||||
#endif
|
||||
|
||||
#if defined(__riscv)
|
||||
#define CPU_FEATURES_ARCH_RISCV
|
||||
#endif
|
||||
|
||||
#if defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 32
|
||||
#define CPU_FEATURES_ARCH_RISCV32
|
||||
#endif
|
||||
|
||||
#if defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 64
|
||||
#define CPU_FEATURES_ARCH_RISCV64
|
||||
#endif
|
||||
|
||||
#if defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 128
|
||||
#define CPU_FEATURES_ARCH_RISCV128
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Os
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if (defined(__freebsd__) || defined(__FreeBSD__))
|
||||
#define CPU_FEATURES_OS_FREEBSD
|
||||
#endif
|
||||
|
||||
#if defined(__ANDROID__)
|
||||
#define CPU_FEATURES_OS_ANDROID
|
||||
#endif
|
||||
|
||||
#if defined(__linux__) && !defined(CPU_FEATURES_OS_FREEBSD) && \
|
||||
!defined(CPU_FEATURES_OS_ANDROID)
|
||||
#define CPU_FEATURES_OS_LINUX
|
||||
#endif
|
||||
|
||||
#if (defined(_WIN64) || defined(_WIN32))
|
||||
#define CPU_FEATURES_OS_WINDOWS
|
||||
#endif
|
||||
|
||||
#if (defined(__apple__) || defined(__APPLE__) || defined(__MACH__))
|
||||
// From https://stackoverflow.com/a/49560690
|
||||
#include "TargetConditionals.h"
|
||||
#if defined(TARGET_OS_OSX)
|
||||
#define CPU_FEATURES_OS_MACOS
|
||||
#endif
|
||||
#if defined(TARGET_OS_IPHONE)
|
||||
// This is set for any non-Mac Apple products (IOS, TV, WATCH)
|
||||
#define CPU_FEATURES_OS_IPHONE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Compilers
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if defined(__clang__)
|
||||
#define CPU_FEATURES_COMPILER_CLANG
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) && !defined(__clang__)
|
||||
#define CPU_FEATURES_COMPILER_GCC
|
||||
#endif
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#define CPU_FEATURES_COMPILER_MSC
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Cpp
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if defined(__cplusplus)
|
||||
#define CPU_FEATURES_START_CPP_NAMESPACE \
|
||||
namespace cpu_features { \
|
||||
extern "C" {
|
||||
#define CPU_FEATURES_END_CPP_NAMESPACE \
|
||||
} \
|
||||
}
|
||||
#else
|
||||
#define CPU_FEATURES_START_CPP_NAMESPACE
|
||||
#define CPU_FEATURES_END_CPP_NAMESPACE
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Compiler flags
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Use the following to check if a feature is known to be available at
|
||||
// compile time. See README.md for an example.
|
||||
#if defined(CPU_FEATURES_ARCH_X86)
|
||||
|
||||
#if defined(__AES__)
|
||||
#define CPU_FEATURES_COMPILED_X86_AES 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_X86_AES 0
|
||||
#endif // defined(__AES__)
|
||||
|
||||
#if defined(__F16C__)
|
||||
#define CPU_FEATURES_COMPILED_X86_F16C 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_X86_F16C 0
|
||||
#endif // defined(__F16C__)
|
||||
|
||||
#if defined(__BMI__)
|
||||
#define CPU_FEATURES_COMPILED_X86_BMI 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_X86_BMI 0
|
||||
#endif // defined(__BMI__)
|
||||
|
||||
#if defined(__BMI2__)
|
||||
#define CPU_FEATURES_COMPILED_X86_BMI2 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_X86_BMI2 0
|
||||
#endif // defined(__BMI2__)
|
||||
|
||||
#if (defined(__SSE__) || (_M_IX86_FP >= 1))
|
||||
#define CPU_FEATURES_COMPILED_X86_SSE 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_X86_SSE 0
|
||||
#endif
|
||||
|
||||
#if (defined(__SSE2__) || (_M_IX86_FP >= 2))
|
||||
#define CPU_FEATURES_COMPILED_X86_SSE2 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_X86_SSE2 0
|
||||
#endif
|
||||
|
||||
#if defined(__SSE3__)
|
||||
#define CPU_FEATURES_COMPILED_X86_SSE3 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_X86_SSE3 0
|
||||
#endif // defined(__SSE3__)
|
||||
|
||||
#if defined(__SSSE3__)
|
||||
#define CPU_FEATURES_COMPILED_X86_SSSE3 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_X86_SSSE3 0
|
||||
#endif // defined(__SSSE3__)
|
||||
|
||||
#if defined(__SSE4_1__)
|
||||
#define CPU_FEATURES_COMPILED_X86_SSE4_1 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_X86_SSE4_1 0
|
||||
#endif // defined(__SSE4_1__)
|
||||
|
||||
#if defined(__SSE4_2__)
|
||||
#define CPU_FEATURES_COMPILED_X86_SSE4_2 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_X86_SSE4_2 0
|
||||
#endif // defined(__SSE4_2__)
|
||||
|
||||
#if defined(__AVX__)
|
||||
#define CPU_FEATURES_COMPILED_X86_AVX 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_X86_AVX 0
|
||||
#endif // defined(__AVX__)
|
||||
|
||||
#if defined(__AVX2__)
|
||||
#define CPU_FEATURES_COMPILED_X86_AVX2 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_X86_AVX2 0
|
||||
#endif // defined(__AVX2__)
|
||||
|
||||
#endif // defined(CPU_FEATURES_ARCH_X86)
|
||||
|
||||
#if defined(CPU_FEATURES_ARCH_ANY_ARM)
|
||||
#if defined(__ARM_NEON__)
|
||||
#define CPU_FEATURES_COMPILED_ANY_ARM_NEON 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_ANY_ARM_NEON 0
|
||||
#endif // defined(__ARM_NEON__)
|
||||
#endif // defined(CPU_FEATURES_ARCH_ANY_ARM)
|
||||
|
||||
#if defined(CPU_FEATURES_ARCH_MIPS)
|
||||
#if defined(__mips_msa)
|
||||
#define CPU_FEATURES_COMPILED_MIPS_MSA 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_MIPS_MSA 0
|
||||
#endif // defined(__mips_msa)
|
||||
#if defined(__mips3d)
|
||||
#define CPU_FEATURES_COMPILED_MIPS_MIPS3D 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_MIPS_MIPS3D 0
|
||||
#endif
|
||||
#endif // defined(CPU_FEATURES_ARCH_MIPS)
|
||||
|
||||
#if defined(CPU_FEATURES_ARCH_RISCV)
|
||||
#if defined(__riscv_e)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_E 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_E 0
|
||||
#endif
|
||||
#if defined(__riscv_i)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_I 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_I 0
|
||||
#endif
|
||||
#if defined(__riscv_m)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_M 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_M 0
|
||||
#endif
|
||||
#if defined(__riscv_a)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_A 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_A 0
|
||||
#endif
|
||||
#if defined(__riscv_f)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_F 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_F 0
|
||||
#endif
|
||||
#if defined(__riscv_d)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_D 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_D 0
|
||||
#endif
|
||||
#if defined(__riscv_q)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_Q 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_Q 0
|
||||
#endif
|
||||
#if defined(__riscv_c)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_C 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_C 0
|
||||
#endif
|
||||
#if defined(__riscv_v)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_V 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_V 0
|
||||
#endif
|
||||
#if defined(__riscv_zba)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZBA 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZBA 0
|
||||
#endif
|
||||
#if defined(__riscv_zbb)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZBB 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZBB 0
|
||||
#endif
|
||||
#if defined(__riscv_zbc)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZBC 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZBC 0
|
||||
#endif
|
||||
#if defined(__riscv_zbs)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZBS 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZBS 0
|
||||
#endif
|
||||
#if defined(__riscv_zfh)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZFH 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZFH 0
|
||||
#endif
|
||||
#if defined(__riscv_zfhmin)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZFHMIN 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZFHMIN 0
|
||||
#endif
|
||||
#if defined(__riscv_zknd)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZKND 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZKND 0
|
||||
#endif
|
||||
#if defined(__riscv_zkne)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZKNE 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZKNE 0
|
||||
#endif
|
||||
#if defined(__riscv_zknh)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZKNH 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZKNH 0
|
||||
#endif
|
||||
#if defined(__riscv_zksed)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZKSED 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZKSED 0
|
||||
#endif
|
||||
#if defined(__riscv_zksh)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZKSH 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZKSH 0
|
||||
#endif
|
||||
#if defined(__riscv_zkr)
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZKR 1
|
||||
#else
|
||||
#define CPU_FEATURES_COMPILED_RISCV_ZKR 0
|
||||
#endif
|
||||
#endif // defined(CPU_FEATURES_ARCH_RISCV)
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Utils
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Communicates to the compiler that the block is unreachable
|
||||
#if defined(CPU_FEATURES_COMPILER_CLANG) || defined(CPU_FEATURES_COMPILER_GCC)
|
||||
#define CPU_FEATURES_UNREACHABLE() __builtin_unreachable()
|
||||
#elif defined(CPU_FEATURES_COMPILER_MSC)
|
||||
#define CPU_FEATURES_UNREACHABLE() __assume(0)
|
||||
#else
|
||||
#define CPU_FEATURES_UNREACHABLE()
|
||||
#endif
|
||||
|
||||
// Communicates to the compiler that the function is now deprecated
|
||||
#if defined(CPU_FEATURES_COMPILER_CLANG) || defined(CPU_FEATURES_COMPILER_GCC)
|
||||
#define CPU_FEATURES_DEPRECATED(message) __attribute__((deprecated(message)))
|
||||
#elif defined(CPU_FEATURES_COMPILER_MSC)
|
||||
#define CPU_FEATURES_DEPRECATED(message) __declspec(deprecated(message))
|
||||
#else
|
||||
#define CPU_FEATURES_DEPRECATED(message)
|
||||
#endif
|
||||
|
||||
#endif // CPU_FEATURES_INCLUDE_CPU_FEATURES_MACROS_H_
|
||||
+259
@@ -0,0 +1,259 @@
|
||||
// Copyright 2017 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// A note on Windows AArch64 implementation
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Getting cpu info via EL1 system registers is not possible, so we delegate it
|
||||
// to the Windows API (i.e., IsProcessorFeaturePresent and GetNativeSystemInfo).
|
||||
// The `implementer`, `variant` and `part` fields of the `Aarch64Info` struct
|
||||
// are not used, so they are set to 0. To get `revision` we use
|
||||
// `wProcessorRevision` from `SYSTEM_INFO`.
|
||||
//
|
||||
// Cryptographic Extension:
|
||||
// -----------------------------------------------------------------------------
|
||||
// According to documentation Arm Architecture Reference Manual for
|
||||
// A-profile architecture. A2.3 The Armv8 Cryptographic Extension. The Armv8.0
|
||||
// Cryptographic Extension provides instructions for the acceleration of
|
||||
// encryption and decryption, and includes the following features: FEAT_AES,
|
||||
// FEAT_PMULL, FEAT_SHA1, FEAT_SHA256.
|
||||
// see: https://developer.arm.com/documentation/ddi0487/latest
|
||||
//
|
||||
// We use `PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE` to detect all Armv8.0 crypto
|
||||
// features. This value reports all features or nothing, so even if you only
|
||||
// have support FEAT_AES and FEAT_PMULL, it will still return false.
|
||||
//
|
||||
// From Armv8.2, an implementation of the Armv8.0 Cryptographic Extension can
|
||||
// include either or both of:
|
||||
//
|
||||
// • The AES functionality, including support for multiplication of 64-bit
|
||||
// polynomials. The ID_AA64ISAR0_EL1.AES field indicates whether this
|
||||
// functionality is supported.
|
||||
// • The SHA1 and SHA2-256 functionality. The ID_AA64ISAR0_EL1.{SHA2, SHA1}
|
||||
// fields indicate whether this functionality is supported.
|
||||
//
|
||||
// ID_AA64ISAR0_EL1.AES, bits [7:4]:
|
||||
// Indicates support for AES instructions in AArch64 state. Defined values are:
|
||||
// - 0b0000 No AES instructions implemented.
|
||||
// - 0b0001 AESE, AESD, AESMC, and AESIMC instructions implemented.
|
||||
// - 0b0010 As for 0b0001, plus PMULL/PMULL2 instructions operating on 64-bit
|
||||
// data quantities.
|
||||
//
|
||||
// FEAT_AES implements the functionality identified by the value 0b0001.
|
||||
// FEAT_PMULL implements the functionality identified by the value 0b0010.
|
||||
// From Armv8, the permitted values are 0b0000 and 0b0010.
|
||||
//
|
||||
// ID_AA64ISAR0_EL1.SHA1, bits [11:8]:
|
||||
// Indicates support for SHA1 instructions in AArch64 state. Defined values are:
|
||||
// - 0b0000 No SHA1 instructions implemented.
|
||||
// - 0b0001 SHA1C, SHA1P, SHA1M, SHA1H, SHA1SU0, and SHA1SU1 instructions
|
||||
// implemented.
|
||||
//
|
||||
// FEAT_SHA1 implements the functionality identified by the value 0b0001.
|
||||
// From Armv8, the permitted values are 0b0000 and 0b0001.
|
||||
// If the value of ID_AA64ISAR0_EL1.SHA2 is 0b0000, this field must have the
|
||||
// value 0b0000.
|
||||
//
|
||||
// ID_AA64ISAR0_EL1.SHA2, bits [15:12]:
|
||||
// Indicates support for SHA2 instructions in AArch64 state. Defined values are:
|
||||
// - 0b0000 No SHA2 instructions implemented.
|
||||
// - 0b0001 Implements instructions: SHA256H, SHA256H2, SHA256SU0, and
|
||||
// SHA256SU1.
|
||||
// - 0b0010 Implements instructions:
|
||||
// • SHA256H, SHA256H2, SHA256SU0, and SHA256SU1.
|
||||
// • SHA512H, SHA512H2, SHA512SU0, and SHA512SU1.
|
||||
//
|
||||
// FEAT_SHA256 implements the functionality identified by the value 0b0001.
|
||||
// FEAT_SHA512 implements the functionality identified by the value 0b0010.
|
||||
//
|
||||
// In Armv8, the permitted values are 0b0000 and 0b0001.
|
||||
// From Armv8.2, the permitted values are 0b0000, 0b0001, and 0b0010.
|
||||
//
|
||||
// If the value of ID_AA64ISAR0_EL1.SHA1 is 0b0000, this field must have the
|
||||
// value 0b0000.
|
||||
//
|
||||
// If the value of this field is 0b0010, ID_AA64ISAR0_EL1.SHA3
|
||||
// must have the value 0b0001.
|
||||
//
|
||||
// Other cryptographic features that we cannot detect such as sha512, sha3, sm3,
|
||||
// sm4, sveaes, svepmull, svesha3, svesm4 we set to 0.
|
||||
//
|
||||
// FP/SIMD:
|
||||
// -----------------------------------------------------------------------------
|
||||
// FP/SIMD must be implemented on all Armv8.0 implementations, but
|
||||
// implementations targeting specialized markets may support the following
|
||||
// combinations:
|
||||
//
|
||||
// • No NEON or floating-point.
|
||||
// • Full floating-point and SIMD support with exception trapping.
|
||||
// • Full floating-point and SIMD support without exception trapping.
|
||||
//
|
||||
// ref:
|
||||
// https://developer.arm.com/documentation/den0024/a/AArch64-Floating-point-and-NEON
|
||||
//
|
||||
// So, we use `PF_ARM_VFP_32_REGISTERS_AVAILABLE`,
|
||||
// `PF_ARM_NEON_INSTRUCTIONS_AVAILABLE` to detect `asimd` and `fp`
|
||||
|
||||
#ifndef CPU_FEATURES_INCLUDE_CPUINFO_AARCH64_H_
|
||||
#define CPU_FEATURES_INCLUDE_CPUINFO_AARCH64_H_
|
||||
|
||||
#include "cpu_features_cache_info.h"
|
||||
#include "cpu_features_macros.h"
|
||||
|
||||
CPU_FEATURES_START_CPP_NAMESPACE
|
||||
|
||||
typedef struct {
|
||||
int fp : 1; // Floating-point.
|
||||
int asimd : 1; // Advanced SIMD.
|
||||
int evtstrm : 1; // Generic timer generated events.
|
||||
int aes : 1; // Hardware-accelerated Advanced Encryption Standard.
|
||||
int pmull : 1; // Polynomial multiply long.
|
||||
int sha1 : 1; // Hardware-accelerated SHA1.
|
||||
int sha2 : 1; // Hardware-accelerated SHA2-256.
|
||||
int crc32 : 1; // Hardware-accelerated CRC-32.
|
||||
int atomics : 1; // Armv8.1 atomic instructions.
|
||||
int fphp : 1; // Half-precision floating point support.
|
||||
int asimdhp : 1; // Advanced SIMD half-precision support.
|
||||
int cpuid : 1; // Access to certain ID registers.
|
||||
int asimdrdm : 1; // Rounding Double Multiply Accumulate/Subtract.
|
||||
int jscvt : 1; // Support for JavaScript conversion.
|
||||
int fcma : 1; // Floating point complex numbers.
|
||||
int lrcpc : 1; // Support for weaker release consistency.
|
||||
int dcpop : 1; // Data persistence writeback.
|
||||
int sha3 : 1; // Hardware-accelerated SHA3.
|
||||
int sm3 : 1; // Hardware-accelerated SM3.
|
||||
int sm4 : 1; // Hardware-accelerated SM4.
|
||||
int asimddp : 1; // Dot product instruction.
|
||||
int sha512 : 1; // Hardware-accelerated SHA512.
|
||||
int sve : 1; // Scalable Vector Extension.
|
||||
int asimdfhm : 1; // Additional half-precision instructions.
|
||||
int dit : 1; // Data independent timing.
|
||||
int uscat : 1; // Unaligned atomics support.
|
||||
int ilrcpc : 1; // Additional support for weaker release consistency.
|
||||
int flagm : 1; // Flag manipulation instructions.
|
||||
int ssbs : 1; // Speculative Store Bypass Safe PSTATE bit.
|
||||
int sb : 1; // Speculation barrier.
|
||||
int paca : 1; // Address authentication.
|
||||
int pacg : 1; // Generic authentication.
|
||||
int dcpodp : 1; // Data cache clean to point of persistence.
|
||||
int sve2 : 1; // Scalable Vector Extension (version 2).
|
||||
int sveaes : 1; // SVE AES instructions.
|
||||
int svepmull : 1; // SVE polynomial multiply long instructions.
|
||||
int svebitperm : 1; // SVE bit permute instructions.
|
||||
int svesha3 : 1; // SVE SHA3 instructions.
|
||||
int svesm4 : 1; // SVE SM4 instructions.
|
||||
int flagm2 : 1; // Additional flag manipulation instructions.
|
||||
int frint : 1; // Floating point to integer rounding.
|
||||
int svei8mm : 1; // SVE Int8 matrix multiplication instructions.
|
||||
int svef32mm : 1; // SVE FP32 matrix multiplication instruction.
|
||||
int svef64mm : 1; // SVE FP64 matrix multiplication instructions.
|
||||
int svebf16 : 1; // SVE BFloat16 instructions.
|
||||
int i8mm : 1; // Int8 matrix multiplication instructions.
|
||||
int bf16 : 1; // BFloat16 instructions.
|
||||
int dgh : 1; // Data Gathering Hint instruction.
|
||||
int rng : 1; // True random number generator support.
|
||||
int bti : 1; // Branch target identification.
|
||||
int mte : 1; // Memory tagging extension.
|
||||
int ecv : 1; // Enhanced counter virtualization.
|
||||
int afp : 1; // Alternate floating-point behaviour.
|
||||
int rpres : 1; // 12-bit reciprocal (square root) estimate precision.
|
||||
|
||||
// Make sure to update Aarch64FeaturesEnum below if you add a field here.
|
||||
} Aarch64Features;
|
||||
|
||||
typedef struct {
|
||||
Aarch64Features features;
|
||||
int implementer; // We set 0 for Windows.
|
||||
int variant; // We set 0 for Windows.
|
||||
int part; // We set 0 for Windows.
|
||||
int revision; // We use GetNativeSystemInfo to get processor revision for
|
||||
// Windows.
|
||||
} Aarch64Info;
|
||||
|
||||
Aarch64Info GetAarch64Info(void);
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Introspection functions
|
||||
|
||||
typedef enum {
|
||||
AARCH64_FP,
|
||||
AARCH64_ASIMD,
|
||||
AARCH64_EVTSTRM,
|
||||
AARCH64_AES,
|
||||
AARCH64_PMULL,
|
||||
AARCH64_SHA1,
|
||||
AARCH64_SHA2,
|
||||
AARCH64_CRC32,
|
||||
AARCH64_ATOMICS,
|
||||
AARCH64_FPHP,
|
||||
AARCH64_ASIMDHP,
|
||||
AARCH64_CPUID,
|
||||
AARCH64_ASIMDRDM,
|
||||
AARCH64_JSCVT,
|
||||
AARCH64_FCMA,
|
||||
AARCH64_LRCPC,
|
||||
AARCH64_DCPOP,
|
||||
AARCH64_SHA3,
|
||||
AARCH64_SM3,
|
||||
AARCH64_SM4,
|
||||
AARCH64_ASIMDDP,
|
||||
AARCH64_SHA512,
|
||||
AARCH64_SVE,
|
||||
AARCH64_ASIMDFHM,
|
||||
AARCH64_DIT,
|
||||
AARCH64_USCAT,
|
||||
AARCH64_ILRCPC,
|
||||
AARCH64_FLAGM,
|
||||
AARCH64_SSBS,
|
||||
AARCH64_SB,
|
||||
AARCH64_PACA,
|
||||
AARCH64_PACG,
|
||||
AARCH64_DCPODP,
|
||||
AARCH64_SVE2,
|
||||
AARCH64_SVEAES,
|
||||
AARCH64_SVEPMULL,
|
||||
AARCH64_SVEBITPERM,
|
||||
AARCH64_SVESHA3,
|
||||
AARCH64_SVESM4,
|
||||
AARCH64_FLAGM2,
|
||||
AARCH64_FRINT,
|
||||
AARCH64_SVEI8MM,
|
||||
AARCH64_SVEF32MM,
|
||||
AARCH64_SVEF64MM,
|
||||
AARCH64_SVEBF16,
|
||||
AARCH64_I8MM,
|
||||
AARCH64_BF16,
|
||||
AARCH64_DGH,
|
||||
AARCH64_RNG,
|
||||
AARCH64_BTI,
|
||||
AARCH64_MTE,
|
||||
AARCH64_ECV,
|
||||
AARCH64_AFP,
|
||||
AARCH64_RPRES,
|
||||
AARCH64_LAST_,
|
||||
} Aarch64FeaturesEnum;
|
||||
|
||||
int GetAarch64FeaturesEnumValue(const Aarch64Features* features,
|
||||
Aarch64FeaturesEnum value);
|
||||
|
||||
const char* GetAarch64FeaturesEnumName(Aarch64FeaturesEnum);
|
||||
|
||||
CPU_FEATURES_END_CPP_NAMESPACE
|
||||
|
||||
#if !defined(CPU_FEATURES_ARCH_AARCH64)
|
||||
#error "Including cpuinfo_aarch64.h from a non-aarch64 target."
|
||||
#endif
|
||||
|
||||
#endif // CPU_FEATURES_INCLUDE_CPUINFO_AARCH64_H_
|
||||
+121
@@ -0,0 +1,121 @@
|
||||
// Copyright 2017 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef CPU_FEATURES_INCLUDE_CPUINFO_ARM_H_
|
||||
#define CPU_FEATURES_INCLUDE_CPUINFO_ARM_H_
|
||||
|
||||
#include <stdint.h> // uint32_t
|
||||
|
||||
#include "cpu_features_cache_info.h"
|
||||
#include "cpu_features_macros.h"
|
||||
|
||||
CPU_FEATURES_START_CPP_NAMESPACE
|
||||
|
||||
typedef struct {
|
||||
int swp : 1; // SWP instruction (atomic read-modify-write)
|
||||
int half : 1; // Half-word loads and stores
|
||||
int thumb : 1; // Thumb (16-bit instruction set)
|
||||
int _26bit : 1; // "26 Bit" Model (Processor status register folded into
|
||||
// program counter)
|
||||
int fastmult : 1; // 32x32->64-bit multiplication
|
||||
int fpa : 1; // Floating point accelerator
|
||||
int vfp : 1; // Vector Floating Point.
|
||||
int edsp : 1; // DSP extensions (the 'e' variant of the ARM9 CPUs, and all
|
||||
// others above)
|
||||
int java : 1; // Jazelle (Java bytecode accelerator)
|
||||
int iwmmxt : 1; // Intel Wireless MMX Technology.
|
||||
int crunch : 1; // MaverickCrunch coprocessor
|
||||
int thumbee : 1; // ThumbEE
|
||||
int neon : 1; // Advanced SIMD.
|
||||
int vfpv3 : 1; // VFP version 3
|
||||
int vfpv3d16 : 1; // VFP version 3 with 16 D-registers
|
||||
int tls : 1; // TLS register
|
||||
int vfpv4 : 1; // VFP version 4 with fast context switching
|
||||
int idiva : 1; // SDIV and UDIV hardware division in ARM mode.
|
||||
int idivt : 1; // SDIV and UDIV hardware division in Thumb mode.
|
||||
int vfpd32 : 1; // VFP with 32 D-registers
|
||||
int lpae : 1; // Large Physical Address Extension (>4GB physical memory on
|
||||
// 32-bit architecture)
|
||||
int evtstrm : 1; // kernel event stream using generic architected timer
|
||||
int aes : 1; // Hardware-accelerated Advanced Encryption Standard.
|
||||
int pmull : 1; // Polynomial multiply long.
|
||||
int sha1 : 1; // Hardware-accelerated SHA1.
|
||||
int sha2 : 1; // Hardware-accelerated SHA2-256.
|
||||
int crc32 : 1; // Hardware-accelerated CRC-32.
|
||||
|
||||
// Make sure to update ArmFeaturesEnum below if you add a field here.
|
||||
} ArmFeatures;
|
||||
|
||||
typedef struct {
|
||||
ArmFeatures features;
|
||||
int implementer;
|
||||
int architecture;
|
||||
int variant;
|
||||
int part;
|
||||
int revision;
|
||||
} ArmInfo;
|
||||
|
||||
// TODO(user): Add macros to know which features are present at compile
|
||||
// time.
|
||||
|
||||
ArmInfo GetArmInfo(void);
|
||||
|
||||
// Compute CpuId from ArmInfo.
|
||||
uint32_t GetArmCpuId(const ArmInfo* const info);
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Introspection functions
|
||||
|
||||
typedef enum {
|
||||
ARM_SWP,
|
||||
ARM_HALF,
|
||||
ARM_THUMB,
|
||||
ARM_26BIT,
|
||||
ARM_FASTMULT,
|
||||
ARM_FPA,
|
||||
ARM_VFP,
|
||||
ARM_EDSP,
|
||||
ARM_JAVA,
|
||||
ARM_IWMMXT,
|
||||
ARM_CRUNCH,
|
||||
ARM_THUMBEE,
|
||||
ARM_NEON,
|
||||
ARM_VFPV3,
|
||||
ARM_VFPV3D16,
|
||||
ARM_TLS,
|
||||
ARM_VFPV4,
|
||||
ARM_IDIVA,
|
||||
ARM_IDIVT,
|
||||
ARM_VFPD32,
|
||||
ARM_LPAE,
|
||||
ARM_EVTSTRM,
|
||||
ARM_AES,
|
||||
ARM_PMULL,
|
||||
ARM_SHA1,
|
||||
ARM_SHA2,
|
||||
ARM_CRC32,
|
||||
ARM_LAST_,
|
||||
} ArmFeaturesEnum;
|
||||
|
||||
int GetArmFeaturesEnumValue(const ArmFeatures* features, ArmFeaturesEnum value);
|
||||
|
||||
const char* GetArmFeaturesEnumName(ArmFeaturesEnum);
|
||||
|
||||
CPU_FEATURES_END_CPP_NAMESPACE
|
||||
|
||||
#if !defined(CPU_FEATURES_ARCH_ARM)
|
||||
#error "Including cpuinfo_arm.h from a non-arm target."
|
||||
#endif
|
||||
|
||||
#endif // CPU_FEATURES_INCLUDE_CPUINFO_ARM_H_
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
// Copyright 2017 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef CPU_FEATURES_INCLUDE_CPUINFO_MIPS_H_
|
||||
#define CPU_FEATURES_INCLUDE_CPUINFO_MIPS_H_
|
||||
|
||||
#include "cpu_features_cache_info.h"
|
||||
#include "cpu_features_macros.h"
|
||||
|
||||
CPU_FEATURES_START_CPP_NAMESPACE
|
||||
|
||||
typedef struct {
|
||||
int msa : 1; // MIPS SIMD Architecture
|
||||
// https://www.mips.com/products/architectures/ase/simd/
|
||||
int eva : 1; // Enhanced Virtual Addressing
|
||||
// https://www.mips.com/products/architectures/mips64/
|
||||
int r6 : 1; // True if is release 6 of the processor.
|
||||
int mips16 : 1; // Compressed instructions
|
||||
int mdmx : 1; // MIPS Digital Media Extension
|
||||
int mips3d : 1; // 3D graphics acceleration
|
||||
// MIPS(r) Architecture for Programmers, Volume IV-c
|
||||
int smart : 1; // Smart-card cryptography
|
||||
// MIPS(r) Architecture for Programmers, Volume IV-d
|
||||
int dsp : 1; // Digital Signal Processing
|
||||
// MIPS(r) Architecture for Programmers, Volume IV-e
|
||||
// https://www.mips.com/products/architectures/ase/dsp/
|
||||
|
||||
// Make sure to update MipsFeaturesEnum below if you add a field here.
|
||||
} MipsFeatures;
|
||||
|
||||
typedef struct {
|
||||
MipsFeatures features;
|
||||
} MipsInfo;
|
||||
|
||||
MipsInfo GetMipsInfo(void);
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Introspection functions
|
||||
|
||||
typedef enum {
|
||||
MIPS_MSA,
|
||||
MIPS_EVA,
|
||||
MIPS_R6,
|
||||
MIPS_MIPS16,
|
||||
MIPS_MDMX,
|
||||
MIPS_MIPS3D,
|
||||
MIPS_SMART,
|
||||
MIPS_DSP,
|
||||
MIPS_LAST_,
|
||||
} MipsFeaturesEnum;
|
||||
|
||||
int GetMipsFeaturesEnumValue(const MipsFeatures* features,
|
||||
MipsFeaturesEnum value);
|
||||
|
||||
const char* GetMipsFeaturesEnumName(MipsFeaturesEnum);
|
||||
|
||||
CPU_FEATURES_END_CPP_NAMESPACE
|
||||
|
||||
#if !defined(CPU_FEATURES_ARCH_MIPS)
|
||||
#error "Including cpuinfo_mips.h from a non-mips target."
|
||||
#endif
|
||||
|
||||
#endif // CPU_FEATURES_INCLUDE_CPUINFO_MIPS_H_
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user