diff --git a/core/src/main/scalanative/sttp/client4/curl/internal/CCurl.scala b/core/src/main/scalanative/sttp/client4/curl/internal/CCurl.scala index a1c8a67ccb..fc784b96ac 100644 --- a/core/src/main/scalanative/sttp/client4/curl/internal/CCurl.scala +++ b/core/src/main/scalanative/sttp/client4/curl/internal/CCurl.scala @@ -3,6 +3,7 @@ package sttp.client4.curl.internal import sttp.client4.curl.internal.CurlCode.CurlCode import scala.scalanative.unsafe._ +import scala.scalanative.meta.LinktimeInfo.isWindows private[curl] trait Curl {} @@ -10,9 +11,20 @@ private[curl] trait Mime {} private[curl] trait MimePart {} -@link("curl") +private[curl] object libcurlPlatformCompat { + @extern @link("libcurl") @link("crypt32") + private object libcurlWin64 extends CCurl + + @extern @link("curl") + private object libcurlDefault extends CCurl + + val instance: CCurl = + if (isWindows) libcurlWin64 + else libcurlDefault +} + @extern -private[curl] object CCurl { +private[curl] trait CCurl { @name("curl_easy_init") def init: Ptr[Curl] = extern diff --git a/core/src/main/scalanative/sttp/client4/curl/internal/package.scala b/core/src/main/scalanative/sttp/client4/curl/internal/package.scala index 7c15c81872..67d9b5fd81 100644 --- a/core/src/main/scalanative/sttp/client4/curl/internal/package.scala +++ b/core/src/main/scalanative/sttp/client4/curl/internal/package.scala @@ -6,4 +6,6 @@ package object internal { type CurlSlist = CStruct2[CString, Ptr[_]] type CurlFetch = CStruct2[CString, CSize] val CurlZeroTerminated = -1L + + private[curl] final val CCurl = libcurlPlatformCompat.instance }