<Project Sdk="Microsoft.NET.Sdk" InitialTargets="ConfigureNative">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
  </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 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)"
      Condition="!Exists('$(BaseIntermediateOutputPath)native/CMakeCache.txt')" />

    <Exec Command="cmake --build $(OutputPath)native --config $(Configuration)" />
  </Target>
</Project>