diff --git a/CMakeLists.txt b/CMakeLists.txt
index f7c4d67..89ac386 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -503,6 +503,12 @@ endif()
 if(CMAKE_MSVC_RUNTIME_LIBRARY)
   list(APPEND _curl_platform_flags "-DCMAKE_MSVC_RUNTIME_LIBRARY=${CMAKE_MSVC_RUNTIME_LIBRARY}")
 endif()
+if(APPLE AND USE_LIBIDN2)
+  set(_curl_exe_linker_flags "${CMAKE_EXE_LINKER_FLAGS} -liconv")
+  set(_curl_shared_linker_flags "${CMAKE_SHARED_LINKER_FLAGS} -liconv")
+  list(APPEND _curl_platform_flags "-DCMAKE_EXE_LINKER_FLAGS=${_curl_exe_linker_flags}")
+  list(APPEND _curl_platform_flags "-DCMAKE_SHARED_LINKER_FLAGS=${_curl_shared_linker_flags}")
+endif()
 if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
   # Static BoringSSL is C++. Retain its runtime even when link flags are
   # evaluated before the OpenSSL archives.
