Skip to content

Commit

Permalink
update windows.yml, use ps1 script to build onnxruntime in windows
Browse files Browse the repository at this point in the history
  • Loading branch information
benjaminwan committed Jul 11, 2024
1 parent d5b922b commit 907bbbc
Show file tree
Hide file tree
Showing 6 changed files with 392 additions and 52 deletions.
3 changes: 0 additions & 3 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@ name: android

on:
workflow_dispatch:
push:
tags:
- '*'

jobs:
android:
Expand Down
3 changes: 0 additions & 3 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@ name: linux

on:
workflow_dispatch:
push:
tags:
- '*'

jobs:
linux:
Expand Down
3 changes: 0 additions & 3 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@ name: macos

on:
workflow_dispatch:
push:
tags:
- '*'

jobs:
macos:
Expand Down
61 changes: 45 additions & 16 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@ name: windows

on:
workflow_dispatch:
push:
tags:
- '*'

jobs:
windows:
Expand All @@ -26,7 +23,7 @@ jobs:
name: windows-${{ matrix.list.vs_name }}-${{ matrix.crt }}

env:
BUILD_SCRIPT: build-onnxruntime.bat
BUILD_SCRIPT: build-onnxruntime.ps1
SHARED_PKG_NAME: onnxruntime-${{ matrix.ver.onnx }}-windows-${{ matrix.list.vs_name }}-shared-${{ matrix.crt }}
STATIC_PKG_NAME: onnxruntime-${{ matrix.ver.onnx }}-windows-${{ matrix.list.vs_name }}-static-${{ matrix.crt }}
JAVA_PKG_NAME: onnxruntime-${{ matrix.ver.onnx }}-windows-${{ matrix.list.vs_name }}-java-${{ matrix.crt }}
Expand All @@ -39,7 +36,7 @@ jobs:

# Setup JDK 11
- name: Set up JDK 11
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
Expand All @@ -52,11 +49,11 @@ jobs:
run: gradle --version

# 检出代码
- uses: actions/checkout@v3
- uses: actions/checkout@v4

# 检出onnxruntime
- name: checkout onnxruntime
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
repository: microsoft/onnxruntime
path: onnxruntime-${{ matrix.ver.onnx }}
Expand All @@ -68,25 +65,57 @@ jobs:
run: |
cp ${{ env.BUILD_SCRIPT }} onnxruntime-${{ matrix.ver.onnx }}
# 编译
- name: build
- name: build x64
shell: powershell
run: |
cd onnxruntime-${{ matrix.ver.onnx }}
./${{ env.BUILD_SCRIPT }} ${{ matrix.list.vs_ver }} ${{ matrix.crt }}
& 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\Launch-VsDevShell.ps1' -SkipAutomaticLocation -HostArch amd64 -Arch amd64
.\${{ env.BUILD_SCRIPT }} -VsArch x64 -VsCRT ${{ matrix.crt }}
- name: build x86
shell: powershell
run: |
cd onnxruntime-${{ matrix.ver.onnx }}
& 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\Launch-VsDevShell.ps1' -SkipAutomaticLocation -HostArch amd64 -Arch x86
.\${{ env.BUILD_SCRIPT }} -VsArch x86 -VsCRT ${{ matrix.crt }}
- name: build arm64
shell: powershell
run: |
cd onnxruntime-${{ matrix.ver.onnx }}
& 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\Launch-VsDevShell.ps1' -SkipAutomaticLocation -HostArch amd64 -Arch arm64
.\${{ env.BUILD_SCRIPT }} -VsArch arm64 -VsCRT ${{ matrix.crt }}
# install文件夹改名,并使用7z压缩
- name: 7zip
- name: 7zip pack shared libs
run: |
cp -r onnxruntime-${{ matrix.ver.onnx }}/build-x64-${{ matrix.list.vs_ver }}-${{ matrix.crt }}/Release/install windows-x64
cp -r onnxruntime-${{ matrix.ver.onnx }}/build-Win32-${{ matrix.list.vs_ver }}-${{ matrix.crt }}/Release/install windows-x86
7z a ${{ env.SHARED_PKG_NAME }}.7z windows-x64 windows-x86
cp -r onnxruntime-${{ matrix.ver.onnx }}/build-x86-${{ matrix.list.vs_ver }}-${{ matrix.crt }}/Release/install windows-x86
cp -r onnxruntime-${{ matrix.ver.onnx }}/build-arm64-${{ matrix.list.vs_ver }}-${{ matrix.crt }}/Release/install windows-arm64
7z a ${{ env.SHARED_PKG_NAME }}.7z windows-x64 windows-x86 windows-arm64
rm windows-x64 -r -fo
rm windows-x86 -r -fo
rm windows-arm64 -r -fo
- name: 7zip pack static libs
run: |
cp -r onnxruntime-${{ matrix.ver.onnx }}/build-x64-${{ matrix.list.vs_ver }}-${{ matrix.crt }}/Release/install-static windows-x64
cp -r onnxruntime-${{ matrix.ver.onnx }}/build-Win32-${{ matrix.list.vs_ver }}-${{ matrix.crt }}/Release/install-static windows-x86
7z a ${{ env.STATIC_PKG_NAME }}.7z windows-x64 windows-x86
cp -r onnxruntime-${{ matrix.ver.onnx }}/build-x86-${{ matrix.list.vs_ver }}-${{ matrix.crt }}/Release/install-static windows-x86
cp -r onnxruntime-${{ matrix.ver.onnx }}/build-arm64-${{ matrix.list.vs_ver }}-${{ matrix.crt }}/Release/install-static windows-arm64
7z a ${{ env.STATIC_PKG_NAME }}.7z windows-x64 windows-x86 windows-arm64
rm windows-x64 -r -fo
rm windows-x86 -r -fo
rm windows-arm64 -r -fo
- name: build x64 java
shell: powershell
run: |
cd onnxruntime-${{ matrix.ver.onnx }}
& 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\Launch-VsDevShell.ps1' -SkipAutomaticLocation -HostArch amd64 -Arch amd64
.\${{ env.BUILD_SCRIPT }} -VsArch x64 -VsCRT ${{ matrix.crt }} -BuildJava
- name: 7zip pack java libs
run: |
cp -r onnxruntime-${{ matrix.ver.onnx }}/build-x64-${{ matrix.list.vs_ver }}-${{ matrix.crt }}/Release/java/build/libs ${{ env.JAVA_PKG_NAME }}
7z a ${{ env.JAVA_PKG_NAME }}.7z ${{ env.JAVA_PKG_NAME }}
Expand Down Expand Up @@ -116,7 +145,7 @@ jobs:

steps:
# 检出代码
- uses: actions/checkout@v3
- uses: actions/checkout@v4

# 获取所有的git log和tag
- name: Unshallow
Expand Down
90 changes: 63 additions & 27 deletions build-onnxruntime.bat
Original file line number Diff line number Diff line change
@@ -1,36 +1,51 @@
:: build onnxruntime for windows by benjaminwan
:: x64 build_java, x86 Java is currently not supported on 32-bit x86 architecture
:: use in powershell
:: Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
:: & 'C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\Launch-VsDevShell.ps1' -SkipAutomaticLocation -HostArch amd64 -Arch amd64
@ECHO OFF
chcp 65001
cls
SETLOCAL EnableDelayedExpansion

IF "%1"=="" (
echo input VS_VER none, use v143
set VS_VER="v143"
)^
ECHO input VS_VER none, use v143
set VS_VER="v143"
) ^
ELSE (
echo input VS_VER:%1
ECHO input VS_VER:%1
set VS_VER="%1"
)

IF "%2"=="" (
echo input CRT none, use mt
set CRT="mt"
)^
ECHO input CRT none, use mt
set CRT="mt"
) ^
ELSE (
echo input CRT:%2
ECHO input CRT:%2
set CRT="%2"
)

call :cmakeParams "x64" %VS_VER% %CRT%
call :cmakeParams "Win32" %VS_VER% %CRT%
::call :cmakeParams "Win32" %VS_VER% %CRT%
GOTO:EOF

:getFileName
call set "libs=%%libs%% %~n1"
GOTO:EOF

:getFullPathAndName
call set "libs=%%libs%% %~1"
GOTO:EOF

:check_libexe_exists
::powershell -Command "if(Get-Command lib.exe -errorAction SilentlyContinue) {'true'} else {'false'}"
set pscmdline='powershell -Command "if(Get-Command lib.exe -errorAction SilentlyContinue) {'true'} else {'false'}"'
for /f %%a in (%pscmdline%) do (
set libexe_exists=%%a
)
GOTO:EOF

:getLibsList
set "InFile=onnxruntime.dir\Release\onnxruntime.tlog\link.read.1.tlog"
set "OutFile=libs_list.txt"
Expand All @@ -44,26 +59,47 @@ cmake --build . --config Release --target install
::del /s/q install\*test*.exe
copy install\include\onnxruntime\* install\include
rd /S /Q install\include\onnxruntime
echo set(OnnxRuntime_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/include") > install/OnnxRuntimeConfig.cmake
echo include_directories(${OnnxRuntime_INCLUDE_DIRS}) >> install/OnnxRuntimeConfig.cmake
echo link_directories(${CMAKE_CURRENT_LIST_DIR}/lib) >> install/OnnxRuntimeConfig.cmake
echo set(OnnxRuntime_LIBS onnxruntime) >> install/OnnxRuntimeConfig.cmake
ECHO set(OnnxRuntime_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/include") > install/OnnxRuntimeConfig.cmake
ECHO include_directories(${OnnxRuntime_INCLUDE_DIRS}) >> install/OnnxRuntimeConfig.cmake
ECHO link_directories(${CMAKE_CURRENT_LIST_DIR}/lib) >> install/OnnxRuntimeConfig.cmake
ECHO set(OnnxRuntime_LIBS onnxruntime) >> install/OnnxRuntimeConfig.cmake

mkdir install-static\lib
xcopy install\include install-static\include /s /y /i
call :getLibsList

set libs=
for /f "Delims=" %%a in (libs_list.txt) do (
copy %%a install-static\lib
call :getFileName %%a
call :check_libexe_exists

IF "%libexe_exists%" == "true" (
ECHO "libexe_exists=%libexe_exists%"
set libs=
for /f "Delims=" %%a in (libs_list.txt) do (
call :getFullPathAndName %%a
)
) ELSE (
ECHO "libexe_exists=%libexe_exists%"
set libs=
for /f "Delims=" %%a in (libs_list.txt) do (
copy %%a install-static\lib
call :getFileName %%a
)
)

echo set(OnnxRuntime_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/include") > install-static\OnnxRuntimeConfig.cmake
echo include_directories(${OnnxRuntime_INCLUDE_DIRS}) >> install-static\OnnxRuntimeConfig.cmake
echo link_directories(${CMAKE_CURRENT_LIST_DIR}/lib) >> install-static\OnnxRuntimeConfig.cmake
echo set(OnnxRuntime_LIBS %libs%) >> install-static\OnnxRuntimeConfig.cmake
copy onnxruntime.dir\Release\onnxruntime.tlog\link.read.1.tlog install-static\link.log
ECHO set(OnnxRuntime_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/include")>install-static\OnnxRuntimeConfig.cmake
ECHO include_directories(${OnnxRuntime_INCLUDE_DIRS})>>install-static\OnnxRuntimeConfig.cmake
ECHO link_directories(${CMAKE_CURRENT_LIST_DIR}/lib)>>install-static\OnnxRuntimeConfig.cmake

IF "%libexe_exists%" == "true" (
ECHO set(OnnxRuntime_LIBS onnxruntime.lib)>>install-static\OnnxRuntimeConfig.cmake
) ELSE (
ECHO set(OnnxRuntime_LIBS %libs%)>>install-static\OnnxRuntimeConfig.cmake
)

::IF "%libexe_exists%" == "true" (
:: lib.exe /OUT:install-static\lib\onnxruntime.lib %libs%
::)

GOTO:EOF

:cmakeParams
Expand All @@ -73,16 +109,16 @@ if "%~1" == "Win32" (
else (
set MACHINE_FLAG="--build_java"
)
if "%~2" == "v142" (
IF "%~2" == "v142" (
set VS_FLAG=--cmake_generator "Visual Studio 16 2019"
)^
else (
) ^
ELSE (
set VS_FLAG=--cmake_generator "Visual Studio 17 2022"
)
if "%~3" == "mt" (
IF "%~3" == "mt" (
set STATIC_CRT_FLAG="--enable_msvc_static_runtime"
)^
else (
) ^
ELSE (
set STATIC_CRT_FLAG=
)
python %~dp0\tools\ci_build\build.py --build_dir %~dp0\build-%~1-%~2-%~3 ^
Expand Down
Loading

0 comments on commit 907bbbc

Please sign in to comment.