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:
		
							
								
								
									
										273
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										273
									
								
								.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 | ||||
|           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}} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user