name: Windows CI on: [push, pull_request, workflow_dispatch] jobs: msvc-qmake-build: strategy: matrix: include: - qt_ver: '6.8.0' vs: '2022' aqt_arch: 'win64_msvc2022_64' msvc_arch: 'x64' runs-on: windows-2022 steps: - uses: actions/checkout@v4 - name: Install Qt uses: jurplel/install-qt-action@v4 with: arch: ${{ matrix.aqt_arch }} version: ${{ matrix.qt_ver }} modules: 'qtimageformats' - name: Build shell: cmd run: | set VS=${{ matrix.vs }} set VCVARS="C:\Program Files (x86)\Microsoft Visual Studio\%VS%\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" if not exist %VCVARS% set VCVARS="C:\Program Files\Microsoft Visual Studio\%VS%\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" call %VCVARS% ${{ matrix.msvc_arch }} qmake pineapple-pictures.pro nmake nmake clean windeployqt --verbose=2 --no-quick-import --no-translations --no-opengl-sw --no-system-d3d-compiler --no-system-dxc-compiler --skip-plugin-types tls,networkinformation release\ppic.exe - uses: actions/upload-artifact@v4 with: name: "windows-msvc${{ matrix.vs }}-qt${{ matrix.qt_ver }}-qmake-package" path: release/* msvc-cmake-build: strategy: matrix: include: - qt_ver: '6.8.0' vs: '2022' aqt_arch: 'win64_msvc2022_64' msvc_arch: 'x64' runs-on: windows-2022 steps: - uses: actions/checkout@v4 - name: Install Qt uses: jurplel/install-qt-action@v4 with: arch: ${{ matrix.aqt_arch }} version: ${{ matrix.qt_ver }} modules: 'qtimageformats' - name: Build shell: cmd run: | :: ------ env ------ set PWD=%cd% set VS=${{ matrix.vs }} set VCVARS="C:\Program Files (x86)\Microsoft Visual Studio\%VS%\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" if not exist %VCVARS% set VCVARS="C:\Program Files\Microsoft Visual Studio\%VS%\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" call %VCVARS% ${{ matrix.msvc_arch }} :: ------ dep ------ set CMAKE_PREFIX_PATH=%PWD%/dependencies_bin mkdir dependencies_src :: ===== exiv2 ===== curl -fsSL -o exiv2_bin.zip https://github.com/Exiv2/exiv2/releases/download/v0.28.3/exiv2-0.28.3-2019msvc64.zip 7z x exiv2_bin.zip -y ren .\exiv2-0.28.3-2019msvc64 dependencies_bin :: ===== zlib ===== curl -fsSL -o zlib_src.zip https://zlib.net/zlib131.zip 7z x zlib_src.zip -y -o"dependencies_src" ren .\dependencies_src\zlib-1.3.1 zlib || goto :error cmake ./dependencies_src/zlib -Bbuild_dependencies/zlib -DCMAKE_INSTALL_PREFIX="dependencies_bin" || goto :error cmake --build build_dependencies/zlib --config Release --target=install || goto :error curl -fsSL -o expat_src.zip https://github.com/libexpat/libexpat/archive/R_2_6_2.zip :: ===== AOM for libavif AVI decoding support ===== git clone -q -b v3.10.0 --depth 1 https://aomedia.googlesource.com/aom dependencies_src/aom cmake ./dependencies_src/aom -Bbuild_dependencies/aom -DCMAKE_INSTALL_PREFIX="dependencies_bin" -DENABLE_DOCS=OFF -DBUILD_SHARED_LIBS=ON -DAOM_TARGET_CPU=generic -DENABLE_TESTS=OFF -DENABLE_TESTDATA=OFF -DENABLE_TOOLS=OFF -DENABLE_EXAMPLES=0 || goto :error cmake --build build_dependencies/aom --config Release --target=install || goto :error :: ===== libavif ===== curl -fsSL -o libavif-v1_1_1.zip https://github.com/AOMediaCodec/libavif/archive/v1.1.1.zip 7z x libavif-v1_1_1.zip -y -o"dependencies_src" ren .\dependencies_src\libavif-1.1.1 libavif || goto :error cmake ./dependencies_src/libavif -Bbuild_dependencies/libavif -DCMAKE_INSTALL_PREFIX="dependencies_bin" -DAVIF_CODEC_AOM=ON -DAVIF_LOCAL_LIBYUV=ON cmake --build build_dependencies/libavif --config Release --target=install || goto :error :: ===== expat ===== 7z x expat_src.zip -y -o"dependencies_src" ren .\dependencies_src\libexpat-R_2_6_2 expat || goto :error cmake ./dependencies_src/expat/expat -Bbuild_dependencies/expat -DCMAKE_INSTALL_PREFIX="dependencies_bin" || goto :error cmake --build build_dependencies/expat --config Release --target=install || goto :error :: ===== ECM ===== git clone -q https://invent.kde.org/frameworks/extra-cmake-modules.git dependencies_src/extra-cmake-modules cmake .\dependencies_src\extra-cmake-modules -Bbuild_dependencies/extra-cmake-modules -DCMAKE_INSTALL_PREFIX="dependencies_bin" -DBUILD_TESTING=OFF || goto :error cmake --build build_dependencies/extra-cmake-modules --config Release --target=install || goto :error :: ===== KArchive ===== git clone -q https://invent.kde.org/frameworks/karchive.git dependencies_src/karchive cmake .\dependencies_src\karchive -Bbuild_dependencies/karchive -DWITH_LIBZSTD=OFF -DWITH_BZIP2=OFF -DWITH_LIBLZMA=OFF -DCMAKE_INSTALL_PREFIX="dependencies_bin" || goto :error cmake --build build_dependencies/karchive --config Release --target=install || goto :error :: ===== KImageFormats ===== git clone -q https://invent.kde.org/frameworks/kimageformats.git dependencies_src/kimageformats cmake .\dependencies_src\kimageformats -Bbuild_dependencies/kimageformats -DKDE_INSTALL_QTPLUGINDIR=%QT_ROOT_DIR%\plugins || goto :error cmake --build build_dependencies/kimageformats --config Release --target=install || goto :error :: ------ app ------ cmake -Bbuild . -DCMAKE_INSTALL_PREFIX="%PWD%\build\" cmake --build build --config Release cmake --build build --config Release --target=install :: ------ pkg ------ windeployqt --verbose=2 --no-quick-import --no-translations --no-opengl-sw --no-system-d3d-compiler --no-system-dxc-compiler --skip-plugin-types tls,networkinformation build\bin\ppic.exe robocopy ./dependencies_bin/bin build/bin *.dll if ErrorLevel 8 (exit /B 1) copy LICENSE build\bin exit /B 0 - uses: actions/upload-artifact@v4 with: name: "windows-msvc${{ matrix.vs }}-qt${{ matrix.qt_ver }}-cmake-package" path: build/bin/*