diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index 2a86c747d9a..e5dcf5b89d8 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -2820,7 +2820,7 @@ task jsinterop_math(type: RunStandaloneKonanTest) { } task interop_libiconv(type: RunStandaloneKonanTest) { - disabled = (isWindows() || (project.testTarget != null)) + disabled = (project.testTarget != null) source = "interop/libiconv.kt" goldValue = "72 72\n101 101\n108 108\n108 108\n111 111\n33 33\n" } diff --git a/platformLibs/src/platform/mingw/iconv.def b/platformLibs/src/platform/mingw/iconv.def new file mode 100644 index 00000000000..2bcab5219ee --- /dev/null +++ b/platformLibs/src/platform/mingw/iconv.def @@ -0,0 +1,24 @@ +depends = posix +package = platform.iconv +headers = iconv.h +headerFilter = NOTHING +linkerOpts = -Wl,-Bstatic -liconv -Wl,-Bdynamic + +--- +#undef iconv_t +typedef void *iconv_t; + +#undef iconv_open +static inline iconv_t iconv_open(const char* tocode, const char* fromcode) { + return libiconv_open(tocode, fromcode); +} + +#undef iconv +static inline size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) { + return libiconv(cd, inbuf, inbytesleft, outbuf, outbytesleft); +} + +#undef iconv_close +static inline int iconv_close(iconv_t cd) { + return libiconv_close(cd); +}