|
1 | | -name: Build libpng Libraries |
| 1 | +name: Build and Update libpng Libraries |
2 | 2 |
|
3 | 3 | on: [workflow_dispatch] |
4 | 4 |
|
5 | 5 | jobs: |
6 | 6 | build: |
7 | | - runs-on: ${{ matrix.os }} |
8 | | - strategy: |
9 | | - matrix: |
10 | | - include: |
11 | | - - os: ubuntu-latest |
12 | | - arch: x86_64 |
13 | | - cmake-arch: x64 |
14 | | - vcpkg-triplet: x64-linux |
15 | | - - os: linux |
16 | | - arch: arm64 |
17 | | - cmake-arch: aarch64 |
18 | | - runner-label: self-hosted |
19 | | - vcpkg-triplet: arm64-linux |
20 | | - - os: windows-latest |
21 | | - arch: x86_64 |
22 | | - cmake-arch: x64 |
23 | | - vcpkg-triplet: x64-windows-static |
24 | | - - os: windows-latest |
25 | | - arch: x86 |
26 | | - cmake-arch: win32 |
27 | | - vcpkg-triplet: x86-windows-static |
28 | | - - os: windows-latest |
29 | | - arch: arm64 |
30 | | - cmake-arch: arm64 |
31 | | - vcpkg-triplet: arm64-windows-static |
32 | | - - os: macos-latest |
33 | | - arch: x86_64 |
34 | | - cmake-arch: x86_64 |
35 | | - vcpkg-triplet: x64-osx |
36 | | - - os: macos-latest |
37 | | - arch: arm64 |
38 | | - cmake-arch: arm64 |
39 | | - vcpkg-triplet: arm64-osx |
40 | | - |
41 | | - steps: |
42 | | - |
43 | | - with: |
44 | | - repository: "pnggroup/libpng" |
45 | | - path: "libpng" |
46 | | - ref: "v1.6.47" |
47 | | - submodules: true |
48 | | - |
49 | | - - name: Install Dependencies on Ubuntu |
50 | | - if: matrix.os == 'linux' || matrix.os == 'ubuntu-latest' |
51 | | - run: | |
52 | | - sudo apt-get update |
53 | | - sudo apt-get install -y build-essential cmake curl zip unzip tar ninja-build |
54 | | -
|
55 | | - - name: Install vcpkg on Linux and macOS |
56 | | - if: runner.os != 'Windows' |
57 | | - run: | |
58 | | - cd libpng |
59 | | - git clone https://github.com/microsoft/vcpkg.git |
60 | | - ./vcpkg/bootstrap-vcpkg.sh |
61 | | - ./vcpkg/vcpkg install zlib --triplet ${{ matrix.vcpkg-triplet }} |
62 | | - |
63 | | - - name: Install vcpkg on Windows |
64 | | - if: runner.os == 'Windows' |
65 | | - run: | |
66 | | - cd libpng |
67 | | - git clone https://github.com/microsoft/vcpkg.git |
68 | | - ./vcpkg/bootstrap-vcpkg.bat |
69 | | - ./vcpkg/vcpkg.exe install zlib --triplet ${{ matrix.vcpkg-triplet }} |
70 | | -
|
71 | | - - name: Configure libpng with CMake on Linux |
72 | | - if: matrix.os == 'linux' || matrix.os == 'ubuntu-latest' |
73 | | - run: | |
74 | | - cd libpng |
75 | | - cmake -S ./ -B ./build -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_PROCESSOR=${{ matrix.cmake-arch }} -DPNG_SHARED=ON -DPNG_STATIC=OFF -DVCPKG_TARGET_TRIPLET=${{ matrix.vcpkg-triplet }} -DCMAKE_TOOLCHAIN_FILE="./vcpkg/scripts/buildsystems/vcpkg.cmake" |
76 | | -
|
77 | | - - name: Configure libpng with CMake on Windows |
78 | | - if: matrix.os == 'windows-latest' && matrix.arch != 'arm64' |
79 | | - run: | |
80 | | - cd libpng |
81 | | - cmake -S ./ -B ./build -DCMAKE_BUILD_TYPE=Release -A ${{ matrix.cmake-arch }} -DPNG_SHARED=ON -DPNG_STATIC=OFF -DVCPKG_TARGET_TRIPLET=${{ matrix.vcpkg-triplet }} -DCMAKE_TOOLCHAIN_FILE="./vcpkg/scripts/buildsystems/vcpkg.cmake" |
82 | | -
|
83 | | - - name: Configure libpng with CMake on Windows (ARM64) |
84 | | - if: matrix.os == 'windows-latest' && matrix.arch == 'arm64' |
85 | | - run: | |
86 | | - cd libpng |
87 | | - cmake -S ./ -B ./build -DCMAKE_BUILD_TYPE=Release -A ${{ matrix.cmake-arch }} -DPNG_SHARED=ON -DPNG_STATIC=OFF -DCMAKE_SYSTEM_VERSION=10.0.26100.0 -DVCPKG_TARGET_TRIPLET=${{ matrix.vcpkg-triplet }} -DCMAKE_TOOLCHAIN_FILE="./vcpkg/scripts/buildsystems/vcpkg.cmake" |
88 | | -
|
89 | | - - name: Configure libpng with CMake on macOS |
90 | | - if: matrix.os == 'macos-latest' |
91 | | - run: | |
92 | | - cd libpng |
93 | | - cmake -S ./ -B ./build -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=${{ matrix.cmake-arch }} -DPNG_SHARED=ON -DPNG_STATIC=OFF -DVCPKG_TARGET_TRIPLET=${{ matrix.vcpkg-triplet }} -DCMAKE_TOOLCHAIN_FILE="./vcpkg/scripts/buildsystems/vcpkg.cmake" |
94 | | -
|
95 | | - - name: Build libpng |
96 | | - run: cmake --build libpng/build --config Release |
97 | | - |
98 | | - - name: Move Windows binaries |
99 | | - if: matrix.os == 'windows-latest' |
100 | | - run: | |
101 | | - mv libpng/build/Release/*.dll libpng/build/ |
102 | | -
|
103 | | - - name: Upload Artifacts |
104 | | - |
105 | | - with: |
106 | | - name: libpng-${{ matrix.os }}-${{ matrix.arch }}-artifacts |
107 | | - path: | |
108 | | - libpng/build/*.dll |
109 | | - libpng/build/*.so |
110 | | - libpng/build/*.dylib |
111 | | - if-no-files-found: ignore # 'warn' or 'ignore' or 'error' |
| 7 | + uses: JunaMeinhold/cmake-actions/.github/workflows/[email protected] |
| 8 | + with: |
| 9 | + lib-name: "libpng" |
| 10 | + repo: "pnggroup/libpng" |
| 11 | + repo-tag: "v1.6.47" |
| 12 | + repo-path: libpng |
| 13 | + cmake-flags: "-DCMAKE_BUILD_TYPE=Release -DPNG_SHARED=ON -DPNG_STATIC=OFF" |
| 14 | + cmake-flags-windows: "-DCMAKE_SYSTEM_VERSION=10.0.26100.0" |
| 15 | + ndk-version: "28.1.13356709" |
| 16 | + android-api: "21" |
| 17 | + build-output-dir: artifacts |
| 18 | + bin-name-osx: "libpng16.dylib" |
| 19 | + bin-name-linux: "libpng16.so" |
| 20 | + bin-name-android: "libpng.so" |
| 21 | + bin-name-windows: "Release/libpng16.dll" |
| 22 | + bin-name-osx-normalized: "libpng.dylib" |
| 23 | + bin-name-linux-normalized: "libpng.so" |
| 24 | + bin-name-android-normalized: "libpng.so" |
| 25 | + bin-name-windows-normalized: "libpng16.dll" |
| 26 | + use-vcpkg: true |
| 27 | + vcpkg-packages: "zlib" |
| 28 | + |
| 29 | + create-pr: |
| 30 | + uses: JunaMeinhold/cmake-actions/.github/workflows/[email protected] |
| 31 | + needs: [build] |
| 32 | + with: |
| 33 | + lib-name: "libpng" |
| 34 | + lib-version: "v1.6.47" |
| 35 | + pr-branch: libpng-artifacts-branch |
| 36 | + pr-base-branch: master |
| 37 | + pr-reviewers: JunaMeinhold |
0 commit comments