mirror of
https://github.com/raylib-cs/raylib-cs
synced 2025-04-05 11:19:39 -04:00
build raylib from sources (#170)
This commit is contained in:
parent
10c0a6dd91
commit
d73f5d84c0
277
.github/workflows/build.yml
vendored
277
.github/workflows/build.yml
vendored
@ -8,143 +8,184 @@ on:
|
||||
- 'README.md'
|
||||
- '.github/ISSUE_TEMPLATE/**'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build on dotnet using ${{ matrix.os }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
prepare:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
version: ${{ steps.version.outputs.version }}
|
||||
pkgversion: ${{ steps.version.outputs.pkgversion }}
|
||||
steps:
|
||||
- name: checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: check raylib version
|
||||
id: version
|
||||
shell: bash
|
||||
run: |
|
||||
echo "version=$(sed -n 's/.*<TargetRaylibTag>\(.*\)<\/TargetRaylibTag>.*/\1/p' Raylib-cs/Raylib-cs.csproj)">> ${GITHUB_OUTPUT}
|
||||
echo "pkgversion=$(sed -n 's/.*<PackageVersion>\(.*\)<\/PackageVersion>.*/\1/p' Raylib-cs/Raylib-cs.csproj)">> ${GITHUB_OUTPUT}
|
||||
|
||||
build-linux:
|
||||
runs-on: ubuntu-latest
|
||||
needs: prepare
|
||||
steps:
|
||||
- name: setup dependencies
|
||||
run: |
|
||||
sudo apt install \
|
||||
libasound2-dev \
|
||||
libx11-dev \
|
||||
libxrandr-dev \
|
||||
libxi-dev \
|
||||
libgl1-mesa-dev \
|
||||
libglu1-mesa-dev \
|
||||
libxcursor-dev \
|
||||
libxinerama-dev
|
||||
|
||||
- name: build raylib
|
||||
env:
|
||||
version: ${{ needs.prepare.outputs.version }}
|
||||
run: |
|
||||
curl -Lso raylib.zip https://github.com/raysan5/raylib/archive/refs/tags/${version}.zip
|
||||
unzip -qq raylib.zip
|
||||
cmake -S raylib-${version} \
|
||||
-B build \
|
||||
-D CMAKE_BUILD_TYPE=Release \
|
||||
-D BUILD_SHARED_LIBS=ON \
|
||||
-D BUILD_EXAMPLES=OFF
|
||||
cmake --build build --config Release
|
||||
|
||||
- name: upload build
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: linux-x64
|
||||
path: build/raylib/libraylib.so
|
||||
if-no-files-found: error
|
||||
|
||||
build-osx:
|
||||
runs-on: macos-latest
|
||||
needs: prepare
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, windows-latest, macOS-latest]
|
||||
name: [arm64, x64]
|
||||
include:
|
||||
- name: arm64
|
||||
arch: arm64
|
||||
- name: x64
|
||||
arch: x86_64
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Setup dotnet
|
||||
uses: actions/setup-dotnet@v1
|
||||
- name: build raylib
|
||||
env:
|
||||
version: ${{ needs.prepare.outputs.version }}
|
||||
run: |
|
||||
curl -Lso raylib.zip https://github.com/raysan5/raylib/archive/refs/tags/${version}.zip
|
||||
unzip -qq raylib.zip
|
||||
cmake -S raylib-${version} \
|
||||
-B build \
|
||||
-D CMAKE_BUILD_TYPE=Release \
|
||||
-D CMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} \
|
||||
-D BUILD_SHARED_LIBS=ON \
|
||||
-D BUILD_EXAMPLES=OFF
|
||||
cmake --build build --config Release
|
||||
|
||||
- name: upload build
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
dotnet-version: 6.0.x
|
||||
- name: Build project
|
||||
run: dotnet build -c Release -f net6.0
|
||||
- name: Test project
|
||||
run: dotnet test -c Release -f net6.0
|
||||
name: osx-${{ matrix.name }}
|
||||
path: build/raylib/libraylib.dylib
|
||||
if-no-files-found: error
|
||||
|
||||
build-windows:
|
||||
runs-on: windows-latest
|
||||
needs: prepare
|
||||
strategy:
|
||||
matrix:
|
||||
name: [x86, x64]
|
||||
include:
|
||||
- name: x86
|
||||
arch: win32
|
||||
- name: x64
|
||||
arch: x64
|
||||
steps:
|
||||
- name: build ${{ matrix.arch }}
|
||||
shell: bash
|
||||
env:
|
||||
version: ${{ needs.prepare.outputs.version }}
|
||||
run: |
|
||||
curl -Lso raylib.zip https://github.com/raysan5/raylib/archive/refs/tags/${version}.zip
|
||||
unzip -qq raylib.zip
|
||||
cmake -S raylib-${version} \
|
||||
-A ${{ matrix.arch }} \
|
||||
-B build \
|
||||
-D CMAKE_BUILD_TYPE=Release \
|
||||
-D BUILD_SHARED_LIBS=ON \
|
||||
-D BUILD_EXAMPLES=OFF
|
||||
cmake --build build --config Release
|
||||
|
||||
- name: upload build
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: win-${{ matrix.name }}
|
||||
path: build/raylib/Release/raylib.dll
|
||||
if-no-files-found: error
|
||||
|
||||
publish:
|
||||
name: Build Release Package
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
needs:
|
||||
- prepare
|
||||
- build-linux
|
||||
- build-osx
|
||||
- build-windows
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: linux-x64
|
||||
path: Raylib-cs/runtimes/linux-x64/native
|
||||
|
||||
- uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: osx-arm64
|
||||
path: Raylib-cs/runtimes/osx-arm64/native
|
||||
|
||||
- uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: osx-x64
|
||||
path: Raylib-cs/runtimes/osx-x64/native
|
||||
|
||||
- uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: win-x86
|
||||
path: Raylib-cs/runtimes/win-x86/native
|
||||
|
||||
- uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: win-x64
|
||||
path: Raylib-cs/runtimes/win-x64/native
|
||||
|
||||
- name: Setup dotnet
|
||||
uses: actions/setup-dotnet@v1
|
||||
uses: actions/setup-dotnet@v3
|
||||
with:
|
||||
dotnet-version: 6.0.x
|
||||
- name: Download Repo
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- id: get-tag
|
||||
name: Get Target Raylib Version
|
||||
uses: mavrosxristoforos/get-xml-info@1.0
|
||||
with:
|
||||
xml-file: "./Raylib-cs/Raylib-cs.csproj"
|
||||
xpath: "//TargetRaylibTag"
|
||||
|
||||
- name: echo tag
|
||||
run: echo ${{ steps.get-tag.outputs.info }}
|
||||
|
||||
- name: Download win-x64 Raylib Release
|
||||
uses: robinraju/release-downloader@v1.3
|
||||
with:
|
||||
repository: "raysan5/raylib"
|
||||
tag: ${{ steps.get-tag.outputs.info }}
|
||||
fileName: "raylib-${{steps.get-tag.outputs.info}}_win64_msvc16.zip"
|
||||
|
||||
- name: extract win-x64
|
||||
uses: montudor/action-zip@v1
|
||||
with:
|
||||
args: unzip -qq raylib-${{steps.get-tag.outputs.info}}_win64_msvc16.zip -d raylib-win64
|
||||
|
||||
- name: copy win-x64
|
||||
uses: canastro/copy-file-action@master
|
||||
with:
|
||||
source: "raylib-win64/raylib-${{steps.get-tag.outputs.info}}_win64_msvc16/lib/raylib.dll"
|
||||
target: "Raylib-cs/runtimes/win-x64/native/raylib.dll"
|
||||
|
||||
- name: Download win-x86 Raylib Release
|
||||
uses: robinraju/release-downloader@v1.3
|
||||
with:
|
||||
repository: "raysan5/raylib"
|
||||
tag: ${{ steps.get-tag.outputs.info }}
|
||||
fileName: "raylib-${{steps.get-tag.outputs.info}}_win32_msvc16.zip"
|
||||
|
||||
- name: extract win-x86
|
||||
uses: montudor/action-zip@v1
|
||||
with:
|
||||
args: unzip -qq raylib-${{steps.get-tag.outputs.info}}_win32_msvc16.zip -d raylib-win86
|
||||
|
||||
- name: copy win-x86
|
||||
uses: canastro/copy-file-action@master
|
||||
with:
|
||||
source: "raylib-win86/raylib-${{steps.get-tag.outputs.info}}_win32_msvc16/lib/raylib.dll"
|
||||
target: "Raylib-cs/runtimes/win-x86/native/raylib.dll"
|
||||
|
||||
- name: Download linux-x64 Raylib Release
|
||||
uses: robinraju/release-downloader@v1.3
|
||||
with:
|
||||
repository: "raysan5/raylib"
|
||||
tag: ${{ steps.get-tag.outputs.info }}
|
||||
fileName: "raylib-${{steps.get-tag.outputs.info}}_linux_amd64.tar.gz"
|
||||
|
||||
- name: extract linux-x64
|
||||
run: mkdir -p raylib-linux64 && tar -xvf raylib-${{steps.get-tag.outputs.info}}_linux_amd64.tar.gz -C raylib-linux64
|
||||
|
||||
- name: copy linux-x64
|
||||
uses: canastro/copy-file-action@master
|
||||
with:
|
||||
source: "raylib-linux64/raylib-${{steps.get-tag.outputs.info}}_linux_amd64/lib/libraylib.so.${{steps.get-tag.outputs.info}}"
|
||||
target: "Raylib-cs/runtimes/linux-x64/native/libraylib.so"
|
||||
|
||||
- name: Download osx-x64 Raylib Release
|
||||
uses: robinraju/release-downloader@v1.3
|
||||
with:
|
||||
repository: "raysan5/raylib"
|
||||
tag: ${{ steps.get-tag.outputs.info }}
|
||||
fileName: "raylib-${{steps.get-tag.outputs.info}}_macos.tar.gz"
|
||||
|
||||
- name: extract osx-x64
|
||||
run: mkdir -p raylib-osx64 && tar -xvf raylib-${{steps.get-tag.outputs.info}}_macos.tar.gz -C raylib-osx64
|
||||
|
||||
- name: copy osx-x64
|
||||
uses: canastro/copy-file-action@master
|
||||
with:
|
||||
source: "raylib-osx64/raylib-${{steps.get-tag.outputs.info}}_macos/lib/libraylib.dylib"
|
||||
target: "Raylib-cs/runtimes/osx-x64/native/libraylib.dylib"
|
||||
|
||||
- name: copy osx-arm64
|
||||
uses: canastro/copy-file-action@master
|
||||
with:
|
||||
source: "raylib-osx64/raylib-${{steps.get-tag.outputs.info}}_macos/lib/libraylib.dylib"
|
||||
target: "Raylib-cs/runtimes/osx-arm64/native/libraylib.dylib"
|
||||
|
||||
- id: get-nuget-version
|
||||
name: Get NuGet Package Version
|
||||
uses: mavrosxristoforos/get-xml-info@1.0
|
||||
with:
|
||||
xml-file: "./Raylib-cs/Raylib-cs.csproj"
|
||||
xpath: "//PackageVersion"
|
||||
|
||||
- name: Create NuGet Package
|
||||
run: dotnet pack -c Release Raylib-cs
|
||||
run: dotnet pack -c Release Raylib-cs
|
||||
|
||||
- name: Upload NuGet Package As Artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: Raylib-cs.${{steps.get-nuget-version.outputs.info}}.nupkg
|
||||
path: Raylib-cs/bin/Release/Raylib-cs.${{steps.get-nuget-version.outputs.info}}.nupkg
|
||||
path: Raylib-cs/bin/Release/Raylib-cs.${{ needs.prepare.outputs.pkgversion }}.nupkg
|
||||
|
||||
- name: Upload NuGet Package As Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
with:
|
||||
files: Raylib-cs/bin/Release/Raylib-cs.${{steps.get-nuget-version.outputs.info}}.nupkg
|
||||
|
||||
with:
|
||||
files: Raylib-cs/bin/Release/Raylib-cs.${{ needs.prepare.outputs.pkgversion }}.nupkg
|
||||
|
||||
- name: Publish to NuGet
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
run: dotnet nuget push Raylib-cs/bin/Release/Raylib-cs.${{steps.get-nuget-version.outputs.info}}.nupkg --api-key ${{secrets.NUGET_API_KEY}}
|
||||
run: |
|
||||
dotnet nuget push \
|
||||
Raylib-cs/bin/Release/Raylib-cs.${{ needs.prepare.outputs.pkgversion }}.nupkg \
|
||||
--api-key ${{secrets.NUGET_API_KEY}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user