mirror of
				https://github.com/raylib-cs/raylib-cs
				synced 2025-10-29 05:59:51 -04:00 
			
		
		
		
	build raylib from sources (#170)
This commit is contained in:
		
							
								
								
									
										271
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										271
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| @@ -8,143 +8,184 @@ on: | |||||||
|       - 'README.md' |       - 'README.md' | ||||||
|       - '.github/ISSUE_TEMPLATE/**' |       - '.github/ISSUE_TEMPLATE/**' | ||||||
|   workflow_dispatch: |   workflow_dispatch: | ||||||
|  |  | ||||||
| jobs: | jobs: | ||||||
|   build: |   prepare: | ||||||
|     name: Build on dotnet using ${{ matrix.os }} |     runs-on: ubuntu-latest | ||||||
|     runs-on: ${{ matrix.os }} |     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: |     strategy: | ||||||
|       matrix: |       matrix: | ||||||
|         os: [ubuntu-latest, windows-latest, macOS-latest] |         name: [arm64, x64] | ||||||
|  |         include: | ||||||
|  |           - name: arm64 | ||||||
|  |             arch: arm64 | ||||||
|  |           - name: x64 | ||||||
|  |             arch: x86_64 | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v2 |       - name: build raylib | ||||||
|       - name: Setup dotnet |         env: | ||||||
|         uses: actions/setup-dotnet@v1 |           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: |         with: | ||||||
|           dotnet-version: 6.0.x |           name: osx-${{ matrix.name }} | ||||||
|       - name: Build project |           path: build/raylib/libraylib.dylib | ||||||
|         run: dotnet build -c Release -f net6.0 |           if-no-files-found: error | ||||||
|       - name: Test project |  | ||||||
|         run: dotnet test -c Release -f net6.0 |   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: |   publish: | ||||||
|     name: Build Release Package |  | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     needs: build |     needs: | ||||||
|  |       - prepare | ||||||
|  |       - build-linux | ||||||
|  |       - build-osx | ||||||
|  |       - build-windows | ||||||
|     steps: |     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 |       - name: Setup dotnet | ||||||
|         uses: actions/setup-dotnet@v1 |         uses: actions/setup-dotnet@v3 | ||||||
|         with: |         with: | ||||||
|           dotnet-version: 6.0.x |           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 |       - name: Create NuGet Package | ||||||
|         run: dotnet pack -c Release Raylib-cs |         run: dotnet pack -c Release Raylib-cs | ||||||
|  |  | ||||||
|       - name: Upload NuGet Package As Artifact |       - name: Upload NuGet Package As Artifact | ||||||
|         uses: actions/upload-artifact@v2 |         uses: actions/upload-artifact@v3 | ||||||
|         with: |         with: | ||||||
|           name: Raylib-cs.${{steps.get-nuget-version.outputs.info}}.nupkg |           path: Raylib-cs/bin/Release/Raylib-cs.${{ needs.prepare.outputs.pkgversion }}.nupkg | ||||||
|           path: Raylib-cs/bin/Release/Raylib-cs.${{steps.get-nuget-version.outputs.info}}.nupkg |  | ||||||
|  |  | ||||||
|       - name: Upload NuGet Package As Release |       - name: Upload NuGet Package As Release | ||||||
|         uses: softprops/action-gh-release@v1 |         uses: softprops/action-gh-release@v1 | ||||||
|         if: startsWith(github.ref, 'refs/tags/') |         if: startsWith(github.ref, 'refs/tags/') | ||||||
|         with: |         with: | ||||||
|           files: Raylib-cs/bin/Release/Raylib-cs.${{steps.get-nuget-version.outputs.info}}.nupkg |           files: Raylib-cs/bin/Release/Raylib-cs.${{ needs.prepare.outputs.pkgversion }}.nupkg | ||||||
|  |  | ||||||
|       - name: Publish to NuGet |       - name: Publish to NuGet | ||||||
|         if: startsWith(github.ref, 'refs/tags/') |         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}} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user