diff --git a/portfile.cmake b/portfile.cmake
index 35bac875b..21757c545 100644
--- a/portfile.cmake
+++ b/portfile.cmake
@@ -536,6 +536,20 @@ if (VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" OR VCPKG_TARGET_ARCHITECTURE STREQU
     endif()
 endif()
 
+if(VCPKG_TARGET_IS_OSX)
+    execute_process(
+        COMMAND ${VCPKG_DETECTED_CMAKE_C_COMPILER} --version
+        OUTPUT_VARIABLE COMPILER_VERSION
+        OUTPUT_STRIP_TRAILING_WHITESPACE
+    )
+
+    string(REGEX MATCH "[0-9]+\\.[0-9]+" COMP_ONLY_VERSION "${COMPILER_VERSION}")
+
+    if(NOT COMP_ONLY_VERSION VERSION_LESS "15.0")
+        string(APPEND OPTIONS " --extra-ldflags=-Wl,-ld_classic")
+    endif()
+endif()
+
 if(VCPKG_TARGET_IS_UWP)
     set(ENV{LIBPATH} "$ENV{LIBPATH};$ENV{_WKITS10}references\\windows.foundation.foundationcontract\\2.0.0.0\\;$ENV{_WKITS10}references\\windows.foundation.universalapicontract\\3.0.0.0\\")
     string(APPEND OPTIONS " --disable-programs")
