1+ # This workflow uses actions that are not certified by GitHub.
2+ # They are provided by a third-party and are governed by
3+ # separate terms of service, privacy policy, and support
4+ # documentation.
5+
6+ name : MSVC
7+
8+ on :
9+ workflow_dispatch :
10+ push :
11+ tags : ["v*"]
12+
13+ env :
14+ PROJECT_NAME : ifsjpeglicm
15+
16+ permissions :
17+ contents : write
18+
19+ jobs :
20+ build :
21+ strategy :
22+ matrix :
23+ arch : ["x86", "x64"]
24+ runs-on : windows-latest
25+
26+ steps :
27+ - name : Checkout
28+ uses : actions/checkout@v4
29+
30+ - name : Set Variables
31+ run : |
32+ if ("${{matrix.arch}}" -eq "x86")
33+ {
34+ echo "MSVC_ARCH=Win32" >> $env:GITHUB_ENV
35+ echo "SPI_EXT=spi" >> $env:GITHUB_ENV
36+ }
37+ else
38+ {
39+ echo "MSVC_ARCH=x64" >> $env:GITHUB_ENV
40+ echo "SPI_EXT=sph" >> $env:GITHUB_ENV
41+ }
42+
43+ - name : Show Variables
44+ run : |
45+ echo "env env.MSVC_ARCH ${{env.MSVC_ARCH}}"
46+ echo "env env.SPI_EXT ${{env.SPI_EXT}}"
47+
48+ - name : Setup cmake
49+ uses : jwlawson/actions-setup-cmake@v2
50+
51+ - name : Check cmake version
52+ run : cmake --version
53+
54+ - name : Add msbuild to PATH
55+ uses : microsoft/setup-msbuild@v2
56+
57+ - name : Checkout jpegli
58+ run : .\build_checkout_jpegli.cmd
59+
60+ - name : Bulid jpegli
61+ run : |
62+ cd jpegli
63+
64+ cmake -G "Visual Studio 17 2022" -A ${{env.MSVC_ARCH}} `
65+ -B "build_release" `
66+ -DCMAKE_INSTALL_PREFIX="out_release" `
67+ -DCMAKE_BUILD_TYPE=Release `
68+ -DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreaded$<$<CONFIG:Debug>:Debug>" `
69+ -DBUILD_TESTING=OFF `
70+ -DJPEGXL_ENABLE_JNI=OFF `
71+ -DJPEGXL_ENABLE_SJPEG=OFF `
72+ -DJPEGXL_ENABLE_OPENEXR=OFF `
73+ -DJPEGXL_ENABLE_BENCHMARK=OFF `
74+ -DJPEGXL_STATIC=ON
75+
76+ cmake --build "build_release" --config Release --target install
77+
78+ - name : Build spi
79+ working-directory : ${{env.GITHUB_WORKSPACE}}
80+ run : |
81+ New-Item ".\include\${{env.MSVC_ARCH}}\lib\jpegli\" -ItemType Directory -ErrorAction SilentlyContinue
82+ New-Item ".\include\${{env.MSVC_ARCH}}\lib\base\" -ItemType Directory -ErrorAction SilentlyContinue
83+
84+ Copy-Item -Path ".\jpegli\build_release\lib\include\jpegli\*.h" -Destination ".\include\${{env.MSVC_ARCH}}\"
85+ Copy-Item -Path ".\jpegli\lib\jpegli\common.h" -Destination ".\include\${{env.MSVC_ARCH}}\lib\jpegli\"
86+ Copy-Item -Path ".\jpegli\lib\jpegli\decode.h" -Destination ".\include\${{env.MSVC_ARCH}}\lib\jpegli\"
87+ Copy-Item -Path ".\jpegli\lib\jpegli\types.h" -Destination ".\include\${{env.MSVC_ARCH}}\lib\jpegli\"
88+ Copy-Item -Path ".\jpegli\lib\base\include_jpeglib.h" -Destination ".\include\${{env.MSVC_ARCH}}\lib\base\"
89+
90+ New-Item ".\lib\${{env.MSVC_ARCH}}\Release\" -ItemType Directory -ErrorAction SilentlyContinue
91+
92+ $hwy = Get-ChildItem -Path ".\jpegli\build_release\" -Recurse -File -Filter "hwy.lib" | Select-Object -First 1 -ExpandProperty FullName
93+ Copy-Item -Path "$hwy" -Destination ".\lib\${{env.MSVC_ARCH}}\Release\"
94+ $jpegli = Get-ChildItem -Path ".\jpegli\build_release\" -Recurse -File -Filter "jpegli-static.lib" | Select-Object -First 1 -ExpandProperty FullName
95+ Copy-Item -Path "$jpegli" -Destination ".\lib\${{env.MSVC_ARCH}}\Release\"
96+
97+ #Get-ChildItem ".\lib\" -Recurse
98+
99+ msbuild /m /p:Platform=${{matrix.arch}} /p:Configuration=Release .
100+
101+ - name : Create a zip file
102+ run : |
103+ New-Item ".\${{env.PROJECT_NAME}}\" -ItemType Director
104+ Copy-Item -Path ".\out\${{env.MSVC_ARCH}}\Release\${{env.PROJECT_NAME}}.${{env.SPI_EXT}}" -Destination ".\${{env.PROJECT_NAME}}\"
105+
106+ if("${{matrix.arch}}" -eq "x64")
107+ {
108+ Copy-Item -Path ".\jpegli\LICENSE" -Destination ".\${{env.PROJECT_NAME}}\LICENSE_jpegli"
109+ Copy-Item -Path ".\LICENSE" -Destination ".\${{env.PROJECT_NAME}}\LICENSE_${{env.PROJECT_NAME}}"
110+ }
111+
112+ - name : Upload Artifact
113+ uses : actions/upload-artifact@v4
114+ with :
115+ name : ${{matrix.arch}}
116+ path : .\${{env.PROJECT_NAME}}\
117+ retention-days : 1
118+ overwrite : true
119+
120+ Release :
121+ runs-on : ubuntu-latest
122+ needs : build
123+ if : startsWith(github.ref, 'refs/tags/')
124+
125+ steps :
126+ - name : Download All Artifacts
127+ uses : actions/download-artifact@v4
128+ with :
129+ path : ${{env.PROJECT_NAME}}
130+ merge-multiple : true
131+
132+ - name : Create a zip
133+ run : |
134+ ls -l ./${{env.PROJECT_NAME}}/
135+ zip -j ${{env.PROJECT_NAME}} ./${{env.PROJECT_NAME}}/*
136+ ls -l
137+ zipinfo ./${{env.PROJECT_NAME}}.zip
138+
139+ - name : Release
140+ uses : softprops/action-gh-release@v2
141+ if : startsWith(github.ref, 'refs/tags/')
142+ with :
143+ name : Release ${{github.ref_name}}
144+ body : |
145+ ## Release notes
146+ files : ${{env.PROJECT_NAME}}.zip
147+
0 commit comments