if(NOT BUILD_DOTNET)
return()
endif()
if(NOT TARGET ${PROJECT_NAMESPACE}::highs)
message(FATAL_ERROR ".Net: missing highs TARGET")
endif()
set(DOTNET_PACKAGE Highs.Native)
set(DOTNET_PACKAGES_DIR "${PROJECT_BINARY_DIR}/dotnet")
# Runtime IDentifier
# see: https://docs.microsoft.com/en-us/dotnet/core/rid-catalog
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)")
set(DOTNET_PLATFORM arm64)
else()
set(DOTNET_PLATFORM x64)
endif()
if(APPLE)
set(DOTNET_RID osx-${DOTNET_PLATFORM})
elseif(UNIX)
set(DOTNET_RID linux-${DOTNET_PLATFORM})
elseif(WIN32)
set(DOTNET_RID win-${DOTNET_PLATFORM})
else()
message(FATAL_ERROR "Unsupported system !")
endif()
message(STATUS ".Net RID: ${DOTNET_RID}")
# Targeted Framework Moniker
# see: https://docs.microsoft.com/en-us/dotnet/standard/frameworks
# see: https://learn.microsoft.com/en-us/dotnet/standard/net-standard
# if(USE_DOTNET_46)
# list(APPEND TFM "net46")
# endif()
# if(USE_DOTNET_461)
# list(APPEND TFM "net461")
# endif()
# if(USE_DOTNET_462)
# list(APPEND TFM "net462")
# endif()
# if(USE_DOTNET_48)
# list(APPEND TFM "net48")
# endif()
if(USE_DOTNET_STD_21)
list(APPEND TFM "netstandard2.1")
endif()
# if(USE_DOTNET_CORE_31)
# list(APPEND TFM "netcoreapp3.1")
# endif()
if(USE_DOTNET_6)
list(APPEND TFM "net6.0")
endif()
# if(USE_DOTNET_7)
# list(APPEND TFM "net7.0")
# endif()
list(LENGTH TFM TFM_LENGTH)
if(TFM_LENGTH EQUAL "0")
message(FATAL_ERROR "No .Net SDK selected !")
endif()
string(JOIN ";" DOTNET_TFM ${TFM})
message(STATUS ".Net TFM: ${DOTNET_TFM}")
if(TFM_LENGTH GREATER "1")
string(CONCAT DOTNET_TFM "" "${DOTNET_TFM}" "")
else()
string(CONCAT DOTNET_TFM "" "${DOTNET_TFM}" "")
endif()
set(DOTNET_PROJECT ${DOTNET_PACKAGE})
message(STATUS ".Net project: ${DOTNET_PROJECT}")
set(DOTNET_PROJECT_DIR ${DOTNET_PACKAGES_DIR}/${DOTNET_PROJECT})
message(STATUS ".Net project build path: ${DOTNET_PROJECT_DIR}")
file(MAKE_DIRECTORY ${DOTNET_PACKAGES_DIR})
configure_file(
${PROJECT_SOURCE_DIR}/nuget/Highs.csproj.in
${DOTNET_PROJECT_DIR}/${DOTNET_PROJECT}.csproj
@ONLY)
file(COPY
${PROJECT_SOURCE_DIR}/src/interfaces/highs_csharp_api.cs
DESTINATION ${DOTNET_PROJECT_DIR})
file(COPY
${PROJECT_SOURCE_DIR}/README.md
DESTINATION ${DOTNET_PROJECT_DIR})
file(COPY
${PROJECT_SOURCE_DIR}/nuget/HiGHS_Logo.png
DESTINATION ${DOTNET_PROJECT_DIR})