chg: New build system that uses the officially distributed binaries, bumped version to 8.0.0, simplified git workflow, removed deprecated OpenGL 1.1 functionality, removed deprecated Raylib 5.0 (and earlier) functions.
This commit is contained in:
parent
ef98ca456a
commit
760761ed39
21 changed files with 331 additions and 392 deletions
187
.github/workflows/build.yml
vendored
187
.github/workflows/build.yml
vendored
|
|
@ -1,185 +1,46 @@
|
|||
name: Build
|
||||
# This workflow will build a .NET project
|
||||
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net
|
||||
|
||||
name: .NET
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["main"]
|
||||
branches: ["master"]
|
||||
pull_request:
|
||||
branches: ["*"]
|
||||
paths-ignore:
|
||||
- "README.md"
|
||||
- ".github/ISSUE_TEMPLATE/**"
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-22.04
|
||||
outputs:
|
||||
version: ${{ steps.version.outputs.version }}
|
||||
pkgversion: ${{ steps.version.outputs.pkgversion }}
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: checkout repository
|
||||
uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: check raylib version
|
||||
id: version
|
||||
shell: bash
|
||||
run: |
|
||||
echo "version=$(sed -n 's/.*<TargetRaylibTag>\(.*\)<\/TargetRaylibTag>.*/\1/p' Raylib-cs/Build.props)">> ${GITHUB_OUTPUT}
|
||||
echo "pkgversion=$(sed -n 's/.*<PackageVersion>\(.*\)<\/PackageVersion>.*/\1/p' Raylib-cs/Build.props)">> ${GITHUB_OUTPUT}
|
||||
|
||||
build-linux:
|
||||
runs-on: ubuntu-22.04
|
||||
needs: build
|
||||
steps:
|
||||
- name: checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: setup dotnet
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
dotnet-version: |
|
||||
6.0.x
|
||||
8.0.x
|
||||
9.0.x
|
||||
10.0.x
|
||||
|
||||
- name: setup dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install \
|
||||
libasound2-dev \
|
||||
libx11-dev \
|
||||
libxrandr-dev \
|
||||
libxi-dev \
|
||||
libgl1-mesa-dev \
|
||||
libglu1-mesa-dev \
|
||||
libxcursor-dev \
|
||||
libxinerama-dev
|
||||
|
||||
- name: build projects
|
||||
run: dotnet build -c Release
|
||||
|
||||
- name: run tests
|
||||
run: dotnet test Raylib-cs.Tests -c Release
|
||||
|
||||
- name: upload build
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: linux-x64
|
||||
path: Raylib-cs.Native/bin/Release/native/raylib/libraylib.so
|
||||
if-no-files-found: error
|
||||
|
||||
build-osx:
|
||||
runs-on: macos-latest
|
||||
needs: build
|
||||
strategy:
|
||||
matrix:
|
||||
name: [arm64, x64]
|
||||
include:
|
||||
- name: arm64
|
||||
arch: arm64
|
||||
- name: x64
|
||||
arch: x86_64
|
||||
steps:
|
||||
- name: checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: setup dotnet
|
||||
uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
dotnet-version: |
|
||||
6.0.x
|
||||
8.0.x
|
||||
|
||||
- name: build projects
|
||||
run: dotnet build -c Release /p:BuildArch=${{ matrix.arch }}
|
||||
|
||||
- name: run tests
|
||||
run: dotnet test Raylib-cs.Tests -c Release
|
||||
|
||||
- name: upload build
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: osx-${{ matrix.name }}
|
||||
path: Raylib-cs.Native/bin/Release/native/raylib/libraylib.dylib
|
||||
if-no-files-found: error
|
||||
|
||||
build-windows:
|
||||
runs-on: windows-latest
|
||||
needs: build
|
||||
strategy:
|
||||
matrix:
|
||||
name: [x86, x64]
|
||||
include:
|
||||
- name: x86
|
||||
arch: win32
|
||||
- name: x64
|
||||
arch: x64
|
||||
steps:
|
||||
- name: checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: setup dotnet
|
||||
uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
dotnet-version: |
|
||||
6.0.x
|
||||
8.0.x
|
||||
|
||||
- name: build projects
|
||||
run: dotnet build -c Release /p:BuildArch=${{ matrix.arch }}
|
||||
|
||||
- name: run tests
|
||||
run: dotnet test Raylib-cs.Tests -c Release
|
||||
|
||||
- name: upload build
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: win-${{ matrix.name }}
|
||||
path: Raylib-cs.Native/bin/Release/native/raylib/Release/raylib.dll
|
||||
if-no-files-found: error
|
||||
|
||||
build-publish:
|
||||
runs-on: ubuntu-22.04
|
||||
needs:
|
||||
- build-linux
|
||||
- build-osx
|
||||
- build-windows
|
||||
steps:
|
||||
- name: checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/download-artifact@v4.1.7
|
||||
with:
|
||||
name: linux-x64
|
||||
path: Raylib-cs/runtimes/linux-x64/native
|
||||
|
||||
- uses: actions/download-artifact@v4.1.7
|
||||
with:
|
||||
name: osx-arm64
|
||||
path: Raylib-cs/runtimes/osx-arm64/native
|
||||
|
||||
- uses: actions/download-artifact@v4.1.7
|
||||
with:
|
||||
name: osx-x64
|
||||
path: Raylib-cs/runtimes/osx-x64/native
|
||||
|
||||
- uses: actions/download-artifact@v4.1.7
|
||||
with:
|
||||
name: win-x86
|
||||
path: Raylib-cs/runtimes/win-x86/native
|
||||
|
||||
- uses: actions/download-artifact@v4.1.7
|
||||
with:
|
||||
name: win-x64
|
||||
path: Raylib-cs/runtimes/win-x64/native
|
||||
|
||||
- name: setup dotnet
|
||||
uses: actions/setup-dotnet@v4
|
||||
with:
|
||||
dotnet-version: |
|
||||
6.0.x
|
||||
8.0.x
|
||||
|
||||
- name: create NuGet Package
|
||||
- name: Create NuGet Package
|
||||
run: dotnet pack Raylib-cs -c Release --output nuget
|
||||
|
||||
|
||||
- name: Restore + Install Built Package
|
||||
run: |
|
||||
dotnet restore
|
||||
|
||||
- name: Run Tests
|
||||
run: |
|
||||
dotnet test --verbosity normal
|
||||
|
||||
- name: upload NuGet Package As Artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@
|
|||
|
||||
|
||||
using System.Numerics;
|
||||
using Raylib_cs;
|
||||
using static Raylib_cs.Raylib;
|
||||
|
||||
namespace Examples.Core;
|
||||
|
|
|
|||
|
|
@ -5,8 +5,9 @@
|
|||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<StartupObject>Examples.Program</StartupObject>
|
||||
<RunWorkingDirectory>$(MSBuildThisFileDirectory)</RunWorkingDirectory>
|
||||
<LangVersion>default</LangVersion>
|
||||
<LangVersion>12</LangVersion>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
@ -15,11 +16,10 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Using Include="Raylib_cs" />
|
||||
<Using Include="Raylib_cs"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="../Raylib-cs/Raylib-cs.csproj" />
|
||||
<ProjectReference Include="../Raylib-cs.Native/Raylib-cs.Native.csproj" />
|
||||
<PackageReference Include="Raylib-cs" Version="8.0.0"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
using System;
|
||||
using System.Numerics;
|
||||
using Raylib_cs;
|
||||
using static Raylib_cs.Raylib;
|
||||
|
||||
namespace Examples.Shapes;
|
||||
|
|
|
|||
7
NuGet.config
Normal file
7
NuGet.config
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<packageSources>
|
||||
<add key="LocalRaylibBuild" value="./nuget" />
|
||||
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
|
||||
</packageSources>
|
||||
</configuration>
|
||||
33
README.md
33
README.md
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# Raylib-cs
|
||||
|
||||
C# bindings for raylib, a simple and easy-to-use library to learn videogames programming (www.raylib.com)
|
||||
C# bindings for raylib, a simple and easy-to-use library to learn video games programming (www.raylib.com)
|
||||
|
||||
[](https://github.com/raylib-cs/raylib-cs/graphs/contributors)
|
||||
[](LICENSE)
|
||||
|
|
@ -13,17 +13,30 @@ C# bindings for raylib, a simple and easy-to-use library to learn videogames pro
|
|||
Raylib-cs targets net8.0, net10.0 and uses the [official 6.0 release](https://github.com/raysan5/raylib/releases/tag/6.0)
|
||||
to build the native libraries.
|
||||
|
||||
### Version 8.0.0 of Raylib-cs supports the following runtimes:
|
||||
- **browser-wasm** *(raylib-6.0_webassembly)* 🆕
|
||||
- **linux-x64** *(raylib-6.0_linux_amd64)*
|
||||
- **osx-arm64** *(raylib-6.0_macos)*
|
||||
- **osx-x64** *(raylib-6.0_macos)*
|
||||
- **win-x64** *(raylib-6.0_win64_msvc16)*
|
||||
- **win-x86** *(raylib-6.0_win32_msvc16)*
|
||||
|
||||
The following frameworks are deprecated (fall back to Version 7.x if required):
|
||||
- net6.0 (end of life)
|
||||
|
||||
|
||||
## Status
|
||||
|
||||
Raylib-cs is passively maintained. Occasional updates may be released from time to time. Pull requests may be
|
||||
accepted if they don't have a large maintainence burden.
|
||||
accepted if they don't have a large maintenance burden.
|
||||
|
||||
## Installation - NuGet
|
||||
|
||||
This is the prefered method to get started.
|
||||
This is the preferred method to get started.
|
||||
|
||||
1) Pick a folder in which you would like to start a raylib project. For example "MyRaylibCSProj".
|
||||
2) Then from a terminal whilst in the directory you just created run the following commands. (Please keep in mind .NET should already be installed on your system).
|
||||
1) Pick a folder in which you would like to start a raylib project. For example, "MyRaylibCSProj."
|
||||
2) Then from a terminal (for example, a VSCode terminal), whilst in the directory you just created
|
||||
run the following commands. (Please keep in mind .NET should already be installed on your system)
|
||||
|
||||
```
|
||||
dotnet new console
|
||||
|
|
@ -34,9 +47,11 @@ dotnet add package Raylib-cs
|
|||
|
||||
[](https://www.nuget.org/packages/Raylib-cs/)
|
||||
|
||||
If you need to edit Raylib-cs source then you will need to add the bindings as a project (see below).
|
||||
If you need to edit the Raylib-cs source, then you will need to add the bindings as a project (see below).
|
||||
|
||||
Remember if you are trying to run the above commands in the terminal that you need to be *inside the intended project directory* (not just inside the solution directory) otherwise the command won't work.
|
||||
If you are new to using NuGet (or you've forgotten) and are trying to run the above command in the command prompt,
|
||||
remember that you need to be *inside the intended project directory* (not just inside the solution directory);
|
||||
otherwise the command won't work.
|
||||
|
||||
## Installation - Manual
|
||||
|
||||
|
|
@ -46,9 +61,9 @@ Remember if you are trying to run the above commands in the terminal that you ne
|
|||
|
||||
3. Download/build the native libraries for the platforms you want using the [official 6.0 release](https://github.com/raysan5/raylib/releases/tag/6.0). **NOTE: the MSVC version is required for Windows platforms**
|
||||
|
||||
4. Add the native libraries to your project so they are in the same directory as the executable/can be found in the [search path](https://www.mono-project.com/docs/advanced/pinvoke/).
|
||||
4. Set up the native libraries, so they are in the same directory as the executable/can be found in the [search path](https://www.mono-project.com/docs/advanced/pinvoke/).
|
||||
|
||||
6. Start coding!
|
||||
5. Start coding!
|
||||
|
||||
## Hello, World!
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
namespace Raylib_cs.Native;
|
||||
|
||||
internal class Native
|
||||
{
|
||||
}
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk" InitialTargets="ConfigureNative">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<DebugType>none</DebugType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<GenerateDependencyFile>False</GenerateDependencyFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="../Raylib-cs/Build.props" />
|
||||
|
||||
<PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Linux'))">
|
||||
<NativeExt>so</NativeExt>
|
||||
<NativePre>lib</NativePre>
|
||||
<NativeArch>x64</NativeArch>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="$([MSBuild]::IsOSPlatform('OSX'))">
|
||||
<NativeExt>dylib</NativeExt>
|
||||
<NativePre>lib</NativePre>
|
||||
<NativeArch Condition="$(BuildArch) == ''">x86_x64</NativeArch>
|
||||
<NativeArch Condition="$(BuildArch) != ''">$(BuildArch)</NativeArch>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="$([MSBuild]::IsOSPlatform('Windows'))">
|
||||
<NativeExt>dll</NativeExt>
|
||||
<NativePre>$(Configuration)/</NativePre>
|
||||
<NativeArch Condition="$(BuildArch) == ''">x64</NativeArch>
|
||||
<NativeArch Condition="$(BuildArch) != ''">$(BuildArch)</NativeArch>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup Condition="$([MSBuild]::IsOSPlatform('OSX')) AND $(NativeArch) == 'arm64'">
|
||||
<CMakeArgs Include="-D CMAKE_OSX_ARCHITECTURES=arm64" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="$([MSBuild]::IsOSPlatform('OSX')) AND $(NativeArch) == 'x86_64'">
|
||||
<CMakeArgs Include="-D CMAKE_OSX_ARCHITECTURES=x86_64" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="$([MSBuild]::IsOsPlatform('Windows')) AND $(NativeArch) == 'win32'">
|
||||
<CMakeArgs Include="-A win32" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="$([MSBuild]::IsOsPlatform('Windows')) AND $(NativeArch) == 'x64'">
|
||||
<CMakeArgs Include="-A x64" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="$(OutputPath)native/raylib/$(NativePre)raylib.$(NativeExt)" Link="%(Filename)%(Extension)" CopyToOutputDirectory="PreserveNewest" Condition="Exists('$(OutputPath)native/raylib/$(NativePre)raylib.$(NativeExt)')" />
|
||||
|
||||
<CMakeArgs Include="-B $(OutputPath)native" />
|
||||
<CMakeArgs Include="-S $(BaseIntermediateOutputPath)raylib-$(TargetRaylibTag)" />
|
||||
<CMakeArgs Include="-D CMAKE_BUILD_TYPE=$(Configuration)" />
|
||||
<CMakeArgs Include="-D BUILD_SHARED_LIBS=ON" />
|
||||
<CMakeArgs Include="-D BUILD_EXAMPLES=OFF" />
|
||||
<CMakeArgs Include="-D CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded" />
|
||||
<CMakeArgs Include="-D CMAKE_MINIMUM_REQUIRED_VERSION=3.15" />
|
||||
<CMakeArgs Include="-D CMAKE_POLICY_DEFAULT_CMP0091=NEW" />
|
||||
<!-- <CMakeArgs Include="-D GLFW_BUILD_WAYLAND=ON" /> -->
|
||||
<!-- <CMakeArgs Include="-D GRAPHICS=GRAPHICS_API_OPENGL_43" /> -->
|
||||
</ItemGroup>
|
||||
|
||||
<Target Name="ConfigureNative" Condition="$(SkipLocalBuild) != true">
|
||||
<DownloadFile SourceUrl="https://github.com/raysan5/raylib/archive/refs/tags/$(TargetRaylibTag).zip" DestinationFolder="$(BaseIntermediateOutputPath)" DestinationFileName="raylib.zip" Condition="!Exists('$(BaseIntermediateOutputPath)raylib.zip')" />
|
||||
|
||||
<Unzip SourceFiles="$(BaseIntermediateOutputPath)raylib.zip" DestinationFolder="$(BaseIntermediateOutputPath)" OverwriteReadOnlyFiles="true" Condition="!Exists('$(BaseIntermediateOutputPath)raylib-$(TargetRaylibTag)')" />
|
||||
|
||||
<Exec Command="cmake @(CMakeArgs, ' ') $(CMakeExtraArgs)" />
|
||||
<Exec Command="cmake --build $(OutputPath)native --config $(Configuration)" />
|
||||
</Target>
|
||||
</Project>
|
||||
|
|
@ -1,18 +1,21 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net10.0</TargetFrameworks>
|
||||
<TargetFrameworks>net8.0;net10.0</TargetFrameworks>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<LangVersion>12</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
|
||||
<PackageReference Include="xunit" Version="2.6.2" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.4" />
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
|
||||
<PackageReference Include="xunit" Version="2.6.2"/>
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.4"/>
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.4">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Raylib-cs\Raylib-cs.csproj" />
|
||||
<PackageReference Include="Raylib-cs" Version="8.0.0"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ public static class BlittableHelper
|
|||
|
||||
public class RaylibTests
|
||||
{
|
||||
private unsafe void CheckType<T>() where T : unmanaged
|
||||
private static void CheckType<T>() where T : unmanaged
|
||||
{
|
||||
Assert.True(BlittableHelper.IsBlittable<T>());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,8 +9,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Raylib-cs.Tests", "Raylib-c
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Examples", "Examples\Examples.csproj", "{1E2A5986-3F11-457F-AF97-D0C08D0060BA}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Raylib-cs.Native", "Raylib-cs.Native\Raylib-cs.Native.csproj", "{B89AA313-3675-42A3-80BC-6156913E3A27}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
|
@ -32,9 +30,5 @@ Global
|
|||
{1E2A5986-3F11-457F-AF97-D0C08D0060BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1E2A5986-3F11-457F-AF97-D0C08D0060BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1E2A5986-3F11-457F-AF97-D0C08D0060BA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B89AA313-3675-42A3-80BC-6156913E3A27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B89AA313-3675-42A3-80BC-6156913E3A27}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B89AA313-3675-42A3-80BC-6156913E3A27}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B89AA313-3675-42A3-80BC-6156913E3A27}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
|
|||
2
Raylib-cs.sln.DotSettings
Normal file
2
Raylib-cs.sln.DotSettings
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=macos/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
|
||||
|
|
@ -1,54 +1,193 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net8.0;net10.0</TargetFrameworks>
|
||||
<EnableDefaultItems>false</EnableDefaultItems>
|
||||
<AssemblyName>Raylib-cs</AssemblyName>
|
||||
<RootNamespace>Raylib_cs</RootNamespace>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<NoWarn>$(NoWarn);1591</NoWarn>
|
||||
<LangVersion>12</LangVersion>
|
||||
<PackageRids>win-x64;win-x86;linux-x64;osx-x64;osx-arm64;browser-wasm</PackageRids>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<Title>Raylib-cs</Title>
|
||||
<Description>C# bindings for raylib - A simple and easy-to-use library to learn videogames programming</Description>
|
||||
<NoWarn>$(NoWarn);1591</NoWarn> <!-- missing XML comment on public member -->
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<PackageId>Raylib-cs</PackageId>
|
||||
<Version>8.0.0</Version>
|
||||
<Description>C# bindings for raylib</Description>
|
||||
<RepositoryUrl>https://github.com/raylib-cs/raylib-cs/</RepositoryUrl>
|
||||
<Authors>raylib-cs</Authors>
|
||||
<PackageLicenseExpression>Zlib</PackageLicenseExpression>
|
||||
<PackageReadmeFile>README.md</PackageReadmeFile>
|
||||
<PackageIcon>raylib-cs_64x64.png</PackageIcon>
|
||||
<PackageTags>raylib csharp gamedev</PackageTags>
|
||||
<PackageProjectUrl>https://www.raylib.com/</PackageProjectUrl>
|
||||
<PackProject>true</PackProject>
|
||||
|
||||
<IncludeSymbols>true</IncludeSymbols>
|
||||
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="logo/raylib-cs_64x64.png" Pack="true" PackagePath="" />
|
||||
<None Include="../README.md" Pack="true" PackagePath="" />
|
||||
<!-- Use explicit PackagePath for these to prevent ambiguity -->
|
||||
<None Include="logo/raylib-cs_64x64.png" Pack="true" PackagePath="raylib-cs_64x64.png"/>
|
||||
<None Include="../README.md" Pack="true" PackagePath="README.md"/>
|
||||
<None Include="Raylib-cs.targets" Pack="true" PackagePath="buildTransitive\Raylib-cs.targets"/>
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Import Build Props -->
|
||||
<Import Project="./Build.props" Condition="Exists('./Build.props')"/>
|
||||
<PropertyGroup Condition="'$(TargetRaylibTag)' == ''">
|
||||
<TargetRaylibTag>6.0</TargetRaylibTag>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<NativesRoot>$(BaseIntermediateOutputPath)natives/</NativesRoot>
|
||||
</PropertyGroup>
|
||||
|
||||
<Choose>
|
||||
<When Condition="'$(RuntimeIdentifier)' == 'win-x64'">
|
||||
<PropertyGroup>
|
||||
<RaylibPackageName>raylib-$(TargetRaylibTag)_win64_msvc16</RaylibPackageName>
|
||||
<ArchiveExt>.zip</ArchiveExt>
|
||||
<LibPattern>raylib.dll</LibPattern>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
<When Condition="'$(RuntimeIdentifier)' == 'win-x86'">
|
||||
<PropertyGroup>
|
||||
<RaylibPackageName>raylib-$(TargetRaylibTag)_win32_msvc16</RaylibPackageName>
|
||||
<ArchiveExt>.zip</ArchiveExt>
|
||||
<LibPattern>raylib.dll</LibPattern>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
<When Condition="'$(RuntimeIdentifier)' == 'linux-x64'">
|
||||
<PropertyGroup>
|
||||
<RaylibPackageName>raylib-$(TargetRaylibTag)_linux_amd64</RaylibPackageName>
|
||||
<ArchiveExt>.tar.gz</ArchiveExt>
|
||||
<LibPattern>libraylib.so*</LibPattern>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
<When Condition="'$(RuntimeIdentifier)' == 'osx-x64'">
|
||||
<PropertyGroup>
|
||||
<RaylibPackageName>raylib-$(TargetRaylibTag)_macos</RaylibPackageName>
|
||||
<ArchiveExt>.tar.gz</ArchiveExt>
|
||||
<LibPattern>libraylib.dylib</LibPattern>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
<When Condition="'$(RuntimeIdentifier)' == 'osx-arm64'">
|
||||
<PropertyGroup>
|
||||
<RaylibPackageName>raylib-$(TargetRaylibTag)_macos</RaylibPackageName>
|
||||
<ArchiveExt>.tar.gz</ArchiveExt>
|
||||
<LibPattern>libraylib.dylib</LibPattern>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
<When Condition="'$(RuntimeIdentifier)' == 'browser-wasm'">
|
||||
<PropertyGroup>
|
||||
<RaylibPackageName>raylib-$(TargetRaylibTag)_webassembly</RaylibPackageName>
|
||||
<ArchiveExt>.zip</ArchiveExt>
|
||||
<LibPattern>libraylib.web.a</LibPattern>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
|
||||
<!-- ================================================================== -->
|
||||
<!-- TARGET: PACKING -->
|
||||
<!-- ================================================================== -->
|
||||
<Target Name="PrepareNativesForPack" BeforeTargets="_GetPackageFiles">
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
|
||||
<_TargetRids Include="$(PackageRids)"/>
|
||||
</ItemGroup>
|
||||
|
||||
<Import Project="./Build.props" />
|
||||
<MSBuild Projects="$(MSBuildThisFileFullPath)"
|
||||
Targets="_DownloadAndExtractInternal"
|
||||
Properties="RuntimeIdentifier=%(_TargetRids.Identity);TargetFramework=$(TargetFramework);TargetRaylibTag=$(TargetRaylibTag)"
|
||||
BuildInParallel="false"/>
|
||||
|
||||
<!-- Direct injection into _PackageFiles -->
|
||||
<ItemGroup>
|
||||
<Content Include="runtimes/**" Link="runtimes/%(RecursiveDir)/%(Filename)%(Extension)">
|
||||
<PackagePath>runtimes/</PackagePath>
|
||||
<Pack>true</Pack>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<_PackageFiles Include="$(NativesRoot)win-x64/raylib-$(TargetRaylibTag)_win64_msvc16/lib/raylib.dll">
|
||||
<PackagePath>runtimes/win-x64/native/</PackagePath>
|
||||
<BuildAction>None</BuildAction>
|
||||
</_PackageFiles>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="interop\*.cs" />
|
||||
<Compile Include="types\*.cs" />
|
||||
<Compile Include="types\native\*.cs" />
|
||||
<_PackageFiles Include="$(NativesRoot)win-x86/raylib-$(TargetRaylibTag)_win32_msvc16/lib/raylib.dll">
|
||||
<PackagePath>runtimes/win-x86/native/</PackagePath>
|
||||
<BuildAction>None</BuildAction>
|
||||
</_PackageFiles>
|
||||
|
||||
<_PackageFiles Include="$(NativesRoot)linux-x64/raylib-$(TargetRaylibTag)_linux_amd64/lib/libraylib.so">
|
||||
<PackagePath>runtimes/linux-x64/native/</PackagePath>
|
||||
<BuildAction>None</BuildAction>
|
||||
</_PackageFiles>
|
||||
|
||||
<_PackageFiles Include="$(NativesRoot)osx-x64/raylib-$(TargetRaylibTag)_macos/lib/libraylib.dylib">
|
||||
<PackagePath>runtimes/osx-x64/native/</PackagePath>
|
||||
<BuildAction>None</BuildAction>
|
||||
</_PackageFiles>
|
||||
|
||||
<_PackageFiles Include="$(NativesRoot)osx-arm64/raylib-$(TargetRaylibTag)_macos/lib/libraylib.dylib">
|
||||
<PackagePath>runtimes/osx-arm64/native/</PackagePath>
|
||||
<BuildAction>None</BuildAction>
|
||||
</_PackageFiles>
|
||||
|
||||
<_PackageFiles Include="$(NativesRoot)browser-wasm/raylib-$(TargetRaylibTag)_webassembly/lib/libraylib.web.a">
|
||||
<PackagePath>runtimes/browser-wasm/native/raylib.a</PackagePath>
|
||||
<BuildAction>None</BuildAction>
|
||||
</_PackageFiles>
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<!-- ================================================================== -->
|
||||
<!-- TARGET: LOCAL DEVELOPMENT -->
|
||||
<!-- ================================================================== -->
|
||||
|
||||
<Target Name="CopyNativeToOutput" AfterTargets="Build"
|
||||
Condition="'$(GeneratePackageOnBuild)' != 'true' AND '$(RuntimeIdentifier)' != ''">
|
||||
|
||||
<CallTarget Targets="_DownloadAndExtractInternal"/>
|
||||
<ItemGroup>
|
||||
<_NativeToCopy Include="$(NativesRoot)$(RuntimeIdentifier)/**/$(LibPattern)"/>
|
||||
</ItemGroup>
|
||||
<Copy SourceFiles="@(_NativeToCopy)" DestinationFolder="$(OutputPath)" SkipUnchangedFiles="true"/>
|
||||
</Target>
|
||||
|
||||
<!-- ================================================================== -->
|
||||
<!-- WORKER: DOWNLOADER -->
|
||||
<!-- ================================================================== -->
|
||||
|
||||
<Target Name="_DownloadAndExtractInternal" Condition="'$(RaylibPackageName)' != ''">
|
||||
<PropertyGroup>
|
||||
<_WorkDir>$(NativesRoot)$(RuntimeIdentifier)/</_WorkDir>
|
||||
<_ArchiveFile>$(_WorkDir)$(RaylibPackageName)$(ArchiveExt)</_ArchiveFile>
|
||||
<_ExtractMarker>$(_WorkDir).extracted</_ExtractMarker>
|
||||
</PropertyGroup>
|
||||
|
||||
<Message Text="=== _DownloadAndExtractInternal ===" Importance="high"/>
|
||||
<Message Text="RID = $(RuntimeIdentifier)" Importance="high"/>
|
||||
<Message Text="Archive = $(_ArchiveFile)" Importance="high"/>
|
||||
<Message Text="Marker = $(_ExtractMarker)" Importance="high"/>
|
||||
|
||||
<MakeDir Directories="$(_WorkDir)"/>
|
||||
|
||||
<DownloadFile
|
||||
SourceUrl="https://github.com/raysan5/raylib/releases/download/$(TargetRaylibTag)/$(RaylibPackageName)$(ArchiveExt)"
|
||||
DestinationFolder="$(_WorkDir)"
|
||||
DestinationFileName="$(RaylibPackageName)$(ArchiveExt)"
|
||||
Condition="!Exists('$(_ArchiveFile)')"
|
||||
Retries="3"/>
|
||||
|
||||
<Message Text="unZIPping" Importance="high" Condition="'$(ArchiveExt)' == '.zip' AND !Exists('$(_ExtractMarker)')"/>
|
||||
<Unzip SourceFiles="$(_ArchiveFile)"
|
||||
DestinationFolder="$(_WorkDir)"
|
||||
OverwriteReadOnlyFiles="true"
|
||||
Condition="'$(ArchiveExt)' == '.zip' AND !Exists('$(_ExtractMarker)')"/>
|
||||
|
||||
<Message Text="unTARing" Importance="high" Condition="'$(ArchiveExt)' == '.tar.gz' AND !Exists('$(_ExtractMarker)')"/>
|
||||
<Exec Command="tar -xzf "$(RaylibPackageName)$(ArchiveExt)""
|
||||
WorkingDirectory="$(_WorkDir)"
|
||||
Condition="'$(ArchiveExt)' == '.tar.gz' AND !Exists('$(_ExtractMarker)')"/>
|
||||
|
||||
<Touch Files="$(_ExtractMarker)" AlwaysCreate="true"/>
|
||||
<Message Text="Extraction complete" Importance="high"/>
|
||||
</Target>
|
||||
</Project>
|
||||
10
Raylib-cs/Raylib-cs.targets
Normal file
10
Raylib-cs/Raylib-cs.targets
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Condition="'$(RuntimeIdentifier)' == 'browser-wasm'">
|
||||
<!-- WASM build needs explicit native reference due to semi-static linkage (?) -->
|
||||
<NativeFileReference Include="$(MSBuildThisFileDirectory)..\runtimes\browser-wasm\native\raylib.a"/>
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(RuntimeIdentifier)' == 'browser-wasm'">
|
||||
<EmccFlags>$(EmccFlags) -sUSE_GLFW=3</EmccFlags>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
@ -298,19 +298,6 @@ public static unsafe partial class Rlgl
|
|||
[UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
|
||||
public static partial void DisableVertexAttribute(uint index);
|
||||
|
||||
/// <summary>Enable attribute state pointer<br/>
|
||||
/// NOTE: Only available for GRAPHICS_API_OPENGL_11</summary>
|
||||
[LibraryImport(NativeLibName, EntryPoint = "rlEnableStatePointer")]
|
||||
[UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
|
||||
public static partial void EnableStatePointer(int vertexAttribType, void* buffer);
|
||||
|
||||
/// <summary>Disable attribute state pointer<br/>
|
||||
/// NOTE: Only available for GRAPHICS_API_OPENGL_11</summary>
|
||||
[LibraryImport(NativeLibName, EntryPoint = "rlDisableStatePointer")]
|
||||
[UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
|
||||
public static partial void DisableStatePointer(int vertexAttribType);
|
||||
|
||||
|
||||
// Textures state
|
||||
|
||||
/// <summary>Select and active a texture slot</summary>
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
|
||||
|
|
@ -1 +0,0 @@
|
|||
|
||||
|
|
@ -1 +0,0 @@
|
|||
|
||||
Loading…
Reference in a new issue