<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>net6.0;net8.0</TargetFrameworks>
    <Nullable>enable</Nullable>
    <LangVersion>latest</LangVersion>
    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
    <RuntimeIdentifiers>linux-arm;linux-arm64;linux-x64;win-x86;win-x64;osx-arm64;osx-x64</RuntimeIdentifiers>
    <RootNamespace>ReFuel.Stb</RootNamespace>
    <Optimize>true</Optimize>
  </PropertyGroup>

  <PropertyGroup>
    <!-- Nuget Properties. -->
    <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
    <PackageId>ReFuel.StbImage</PackageId>
    <Version>2.1.0</Version>
    <Authors>STBI Authors, H. Utku Maden</Authors>
    <Description>
      A C# wrapper for the ubiquitous stb_image.h and stb_image_write.h library.
    </Description>
    <PackageReadmeFile>README.md</PackageReadmeFile>
    <PackageLicenseFile>LICENSE.md</PackageLicenseFile>
    <PackageIcon>images\icon.png</PackageIcon>
    <PackageProjectUrl>https://refuel.mixedup.dev/docs/ReFuel.StbImage.html</PackageProjectUrl>
    <RepositoryUrl>https://git.mixedup.dev/ReFuel/ReFuel.StbImage</RepositoryUrl>
    <RepositoryType>git</RepositoryType>
    <PackageTags>stb; stb_image; stbi; image; load; save; read; write</PackageTags>
    <PackageReleaseNotes># 2.1.0 (ABI BRAKING)
* Fixed calling convention of unmanaged function pointers. (Thanks NogginBops!)
* Modified StbiStreamWrapper in order to fixed backing delegates of function pointers from being prematurely collected 
  by release mode JIT and the GC. StbiStreamWrapper.Callbacks is now a readonly field. (ABI BREAKING)

# 2.0.1
* Enabled optimizations across the board for native and managed assemblies.

# 2.0.0
* Exposed stbi_image_write.h
* Moved native function calls to ReFuel.Stb.Native</PackageReleaseNotes>
  </PropertyGroup>

  <!--
    Because the .net build system is garbage of the purest quality, I need
    to specify each runtime directory by itself or it won't be picked up as a
    native specific to each platform and won't be included in the deps.json file
    that determines a lot of load paths for projects.
  -->
  <ItemGroup>
    <Content Include="*.md" Pack="true" PackagePath="/" />
    <None Include="rf_stbimage.png" Pack="true" PackagePath="images\icon.png" />
    <Content Include="runtimes/linux-arm/native/*.so">
      <PackagePath>runtimes/linux-arm/native/</PackagePath>
      <Pack>true</Pack>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="runtimes/linux-arm64/native/*.so">
      <PackagePath>runtimes/linux-arm64/native/</PackagePath>
      <Pack>true</Pack>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="runtimes/linux-x64/native/*.so">
      <PackagePath>runtimes/linux-x64/native/</PackagePath>
      <Pack>true</Pack>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="runtimes/linux-x86/native/*.so">
      <PackagePath>runtimes/linux-x86/native/</PackagePath>
      <Pack>true</Pack>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="runtimes/win-x64/native/*.dll">
      <PackagePath>runtimes/win-x64/native/</PackagePath>
      <Pack>true</Pack>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="runtimes/win-x86/native/*.dll">
      <PackagePath>runtimes/win-x86/native/</PackagePath>
      <Pack>true</Pack>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="runtimes/osx-x64/native/*.dylib">
      <PackagePath>runtimes/osx-x64/native/</PackagePath>
      <Pack>true</Pack>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="runtimes/osx-arm64/native/*.dylib">
      <PackagePath>runtimes/osx-arm64/native/</PackagePath>
      <Pack>true</Pack>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
  </ItemGroup>

</Project>