mirror of
https://github.com/Tencent/ncnn.git
synced 2026-10-17 04:41:47 +08:00
186 lines
8.5 KiB
YAML
186 lines
8.5 KiB
YAML
name: windows
|
|
on:
|
|
push:
|
|
branches: [master]
|
|
paths:
|
|
- '.github/workflows/windows.yml'
|
|
- 'CMakeLists.txt'
|
|
- 'cmake/**'
|
|
- 'src/*'
|
|
- 'src/layer/*'
|
|
- 'src/layer/x86/**'
|
|
- 'src/layer/vulkan/**'
|
|
- 'tests/**'
|
|
- 'tools/**'
|
|
- '!tools/pnnx/**'
|
|
- 'examples/**'
|
|
- 'benchmark/**'
|
|
- '!benchmark/README.md'
|
|
- 'glslang'
|
|
pull_request:
|
|
branches: [master]
|
|
paths:
|
|
- '.github/workflows/windows.yml'
|
|
- 'CMakeLists.txt'
|
|
- 'cmake/**'
|
|
- 'src/*'
|
|
- 'src/layer/*'
|
|
- 'src/layer/x86/**'
|
|
- 'src/layer/vulkan/**'
|
|
- 'tests/**'
|
|
- 'tools/**'
|
|
- '!tools/pnnx/**'
|
|
- 'examples/**'
|
|
- 'benchmark/**'
|
|
- '!benchmark/README.md'
|
|
- 'glslang'
|
|
concurrency:
|
|
group: windows-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
msvc:
|
|
name: ${{ matrix.vs-version }}
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- vs-version: vs2015
|
|
os: windows-2022
|
|
toolset-version: v140
|
|
windows-sdk-version: 22621
|
|
- vs-version: vs2017
|
|
os: windows-2022
|
|
toolset-version: v141
|
|
windows-sdk-version: 22621
|
|
- vs-version: vs2019
|
|
os: windows-2022
|
|
toolset-version: v142
|
|
windows-sdk-version: 26100
|
|
- vs-version: vs2022
|
|
os: windows-2022
|
|
toolset-version: v143
|
|
windows-sdk-version: 26100
|
|
- vs-version: vs2026
|
|
os: windows-2025-vs2026
|
|
toolset-version: v145
|
|
windows-sdk-version: 26100
|
|
|
|
env:
|
|
UseMultiToolTask: true
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Install VS 2017 (v141) Build Tools
|
|
if: matrix.vs-version == 'vs2017'
|
|
run: |
|
|
$vsInstallPath = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property installationPath
|
|
Start-Process -FilePath "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vs_installer.exe" -ArgumentList "modify --installPath `"$vsInstallPath`" --add Microsoft.VisualStudio.Component.VC.v141.x86.x64 --quiet --norestart --nocache" -Wait
|
|
- name: Install and Setup VS 2015 (v140) Build Tools
|
|
if: matrix.vs-version == 'vs2015'
|
|
run: |
|
|
$vs140Path = "C:/vs140_build_tools"
|
|
Invoke-WebRequest -Uri "https://aka.ms/vs/15/release/vs_buildtools.exe" -OutFile vs_buildtools.exe
|
|
Start-Process -FilePath "vs_buildtools.exe" -ArgumentList "--installPath `"$vs140Path`" --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.VC.140 --quiet --wait --norestart --nocache" -Wait
|
|
|
|
$vcvarsPath = (Get-ChildItem -Path $vs140Path -Filter "vcvars64.bat" -Recurse | Select-Object -First 1).FullName
|
|
$cmd = "`"$vcvarsPath`" && powershell -Command `"`$env:PATH;`$env:INCLUDE;`$env:LIB`""
|
|
$output = cmd.exe /c $cmd
|
|
$lines = $output -split "`r`n"
|
|
|
|
echo "PATH=$($lines[0]);$($env:PATH)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
echo "INCLUDE=$($lines[1])" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
echo "LIB=$($lines[2])" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
|
|
|
- uses: GuillaumeFalourd/setup-windows10-sdk-action@v2.5
|
|
with:
|
|
sdk-version: ${{ matrix.windows-sdk-version }}
|
|
|
|
- name: cache-protobuf
|
|
id: cache-protobuf
|
|
uses: actions/cache@v6
|
|
with:
|
|
path: "protobuf-install"
|
|
key: protobuf-${{ matrix.vs-version }}-x64-install-4
|
|
- name: protobuf
|
|
if: steps.cache-protobuf.outputs.cache-hit != 'true'
|
|
run: |
|
|
Invoke-WebRequest -Uri https://github.com/protocolbuffers/protobuf/archive/v3.11.2.zip -OutFile protobuf-3.11.2.zip
|
|
7z x ./protobuf-3.11.2.zip
|
|
cd protobuf-3.11.2
|
|
mkdir build-${{ matrix.vs-version }}; cd build-${{ matrix.vs-version }}
|
|
cmake -T ${{ matrix.toolset-version }},host=x64 -A x64,version=10.0.${{ matrix.windows-sdk-version }}.0 -DCMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE\protobuf-install" -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF -DCMAKE_POLICY_VERSION_MINIMUM="3.5" ../cmake
|
|
cmake --build . --config Release -j 4
|
|
cmake --build . --config Release --target install
|
|
- name: cache-swiftshader
|
|
if: matrix.vs-version != 'vs2015' && matrix.vs-version != 'vs2017'
|
|
id: cache-swiftshader
|
|
uses: actions/cache@v6
|
|
with:
|
|
path: swiftshader-install
|
|
key: swiftshader-${{ matrix.vs-version }}-x64-install-20260917
|
|
- name: checkout-swiftshader
|
|
if: matrix.vs-version != 'vs2015' && matrix.vs-version != 'vs2017' && steps.cache-swiftshader.outputs.cache-hit != 'true'
|
|
uses: actions/checkout@v7
|
|
with:
|
|
repository: google/swiftshader
|
|
path: swiftshader
|
|
ref: 1e80438d2b93ef36a7c05f8d2b81233bac0e3d16
|
|
- name: checkout-swiftshader-submodules
|
|
if: matrix.vs-version != 'vs2015' && matrix.vs-version != 'vs2017' && steps.cache-swiftshader.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd swiftshader
|
|
git -c submodule."third_party/git-hooks".update=none submodule update --init --recursive
|
|
- name: swiftshader
|
|
if: matrix.vs-version != 'vs2015' && matrix.vs-version != 'vs2017' && steps.cache-swiftshader.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd swiftshader
|
|
mkdir build-${{ matrix.vs-version }}; cd build-${{ matrix.vs-version }}
|
|
cmake -T ${{ matrix.toolset-version }},host=x64 -A x64,version=10.0.${{ matrix.windows-sdk-version }}.0 -DCMAKE_INSTALL_PREFIX=install -DSWIFTSHADER_BUILD_EGL=FALSE -DSWIFTSHADER_BUILD_GLESv2=FALSE -DSWIFTSHADER_BUILD_GLES_CM=FALSE -DSWIFTSHADER_BUILD_VULKAN=TRUE -DSWIFTSHADER_BUILD_PVR=FALSE -DSWIFTSHADER_BUILD_TESTS=FALSE -DSWIFTSHADER_ENABLE_ASTC=FALSE -DSWIFTSHADER_WARNINGS_AS_ERRORS=FALSE -DREACTOR_BACKEND=Subzero -DREACTOR_DEFAULT_OPT_LEVEL=Default -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM="3.5" ..
|
|
cmake --build . --config Release -j 4
|
|
mkdir "$env:GITHUB_WORKSPACE/swiftshader-install"
|
|
Copy-Item -Path "Windows\*" -Destination "$env:GITHUB_WORKSPACE\swiftshader-install"
|
|
|
|
- name: x64
|
|
run: |
|
|
mkdir build-x64; cd build-x64
|
|
cmake -T ${{ matrix.toolset-version }},host=x64 -A x64,version=10.0.${{ matrix.windows-sdk-version }}.0 -Dprotobuf_DIR="$env:GITHUB_WORKSPACE\protobuf-install\cmake" -DNCNN_VULKAN=ON -DNCNN_BUILD_TESTS=ON ..
|
|
cmake --build . --config Release -j 4
|
|
- name: x64-test
|
|
if: matrix.vs-version != 'vs2015' && matrix.vs-version != 'vs2017'
|
|
run: |
|
|
echo "[Processor]`nThreadCount=1`n" > build-x64/tests/Release/SwiftShader.ini
|
|
Copy-Item -Path "$env:GITHUB_WORKSPACE\swiftshader-install\vulkan-1.dll" -Destination 'build-x64\tests\Release'
|
|
cd build-x64; ctest -C Release --output-on-failure -j 4
|
|
|
|
- name: x64-sse2
|
|
run: |
|
|
mkdir build-x64-sse2; cd build-x64-sse2
|
|
cmake -T ${{ matrix.toolset-version }},host=x64 -A x64,version=10.0.${{ matrix.windows-sdk-version }}.0 -DNCNN_RUNTIME_CPU=OFF -DNCNN_XOP=OFF -DNCNN_AVX=OFF -DNCNN_AVX2=OFF -DNCNN_AVX512=OFF -DNCNN_BUILD_TESTS=ON -DNCNN_DISABLE_RTTI=ON -DNCNN_DISABLE_EXCEPTION=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF ..
|
|
cmake --build . --config Release -j 4
|
|
- name: x64-sse2-test
|
|
run: cd build-x64-sse2; ctest -C Release --output-on-failure -j 4
|
|
|
|
- name: x64-avx
|
|
run: |
|
|
mkdir build-x64-avx; cd build-x64-avx
|
|
cmake -T ${{ matrix.toolset-version }},host=x64 -A x64,version=10.0.${{ matrix.windows-sdk-version }}.0 -DNCNN_RUNTIME_CPU=OFF -DNCNN_XOP=OFF -DNCNN_FMA4=OFF -DNCNN_AVX=ON -DNCNN_AVX2=OFF -DNCNN_AVX512=OFF -DNCNN_BUILD_TESTS=ON -DNCNN_DISABLE_RTTI=ON -DNCNN_DISABLE_EXCEPTION=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF ..
|
|
cmake --build . --config Release -j 4
|
|
- name: x64-avx-test
|
|
run: cd build-x64-avx; ctest -C Release --output-on-failure -j 4
|
|
|
|
- name: x86
|
|
run: |
|
|
mkdir build-x86; cd build-x86
|
|
cmake -T ${{ matrix.toolset-version }},host=x64 -A Win32,version=10.0.${{ matrix.windows-sdk-version }}.0 -DNCNN_SHARED_LIB=ON -DNCNN_BUILD_TESTS=ON -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF ..
|
|
cmake --build . --config Release -j 4
|
|
- name: x86-test
|
|
run: |
|
|
Copy-Item -Path "build-x86\src\Release\ncnn.dll" -Destination 'build-x86\tests'
|
|
cd build-x86; ctest -C Release --output-on-failure -j 4
|