diff -Naurp curl-8.16.0/CMake/FindGSS.cmake curl-8.16.0_orig/CMake/FindGSS.cmake
--- curl-8.16.0/CMake/FindGSS.cmake	2025-11-11 10:04:08.786293188 +0000
+++ curl-8.16.0/CMake/FindGSS.cmake	2025-11-11 09:54:12.223957480 +0000
@@ -37,6 +37,7 @@
 
 set(_gnu_modname "gss")
 set(_mit_modname "mit-krb5-gssapi")
+set(_heimdal_modname "heimdal-gssapi")
 
 include(CheckIncludeFile)
 include(CheckIncludeFiles)
@@ -51,7 +52,7 @@ set(_gss_LIBRARY_DIRS "")
 if(NOT GSS_ROOT_DIR AND NOT "$ENV{GSS_ROOT_DIR}")
   if(CURL_USE_PKGCONFIG)
     find_package(PkgConfig QUIET)
-    pkg_search_module(_gss ${_gnu_modname} ${_mit_modname})
+    pkg_search_module(_gss ${_gnu_modname} ${_mit_modname} ${_heimdal_modname})
     list(APPEND _gss_root_hints "${_gss_PREFIX}")
     set(_gss_version "${_gss_VERSION}")
   endif()
@@ -139,8 +140,14 @@ if(NOT _gss_FOUND)  # Not found by pkg-c
       OUTPUT_STRIP_TRAILING_WHITESPACE)
 
     # Older versions may not have the "--vendor" parameter. In this case we just do not care.
-    if(NOT _gss_configure_failed AND NOT _gss_vendor MATCHES "Heimdal|heimdal")
-      set(_gss_flavour "MIT")  # assume a default, should not really matter
+    if(_gss_configure_failed)
+      set(_gss_flavour "Heimdal")  # most probably, should not really matter
+    else()
+      if(_gss_vendor MATCHES "Heimdal|heimdal")
+        set(_gss_flavour "Heimdal")
+      else()
+        set(_gss_flavour "MIT")
+      endif()
     endif()
 
   else()  # Either there is no config script or we are on a platform that does not provide one (Windows?)
@@ -149,30 +156,46 @@ if(NOT _gss_FOUND)  # Not found by pkg-c
       cmake_push_check_state()
       list(APPEND CMAKE_REQUIRED_INCLUDES "${_gss_INCLUDE_DIRS}")
       check_include_files("gssapi/gssapi_generic.h;gssapi/gssapi_krb5.h" _gss_have_mit_headers)
-      cmake_pop_check_state()
 
       if(_gss_have_mit_headers)
         set(_gss_flavour "MIT")
         if(WIN32)
           if(CMAKE_SIZEOF_VOID_P EQUAL 8)
             list(APPEND _gss_libdir_suffixes "lib/AMD64")
             set(_gss_libname "gssapi64")
           else()
             list(APPEND _gss_libdir_suffixes "lib/i386")
             set(_gss_libname "gssapi32")
           endif()
         else()
           list(APPEND _gss_libdir_suffixes "lib" "lib64")  # those suffixes are not checked for HINTS
           set(_gss_libname "gssapi_krb5")
         endif()
+      else()
+        # Prevent compiling the header - just check if we can include it
+        list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D__ROKEN_H__")
+        check_include_file("roken.h" _gss_have_roken_h)
+
+        check_include_file("heimdal/roken.h" _gss_have_heimdal_roken_h)
+        if(_gss_have_roken_h OR _gss_have_heimdal_roken_h)
+          set(_gss_flavour "Heimdal")
+        endif()
       endif()
+      cmake_pop_check_state()
     else()
-      find_path(_gss_INCLUDE_DIRS NAMES "gss.h" HINTS ${_gss_root_hints} PATH_SUFFIXES "include")
 
       if(_gss_INCLUDE_DIRS)
-        set(_gss_flavour "GNU")
-        set(_gss_pc_requires ${_gnu_modname})
-        set(_gss_libname "gss")
+        set(_gss_flavour "Heimdal")
+        set(_gss_pc_requires ${_heimdal_modname})
+        set(_gss_libname "libgssapi")
+      else()
+        find_path(_gss_INCLUDE_DIRS NAMES "gss.h" HINTS ${_gss_root_hints} PATH_SUFFIXES "include")
+
+        if(_gss_INCLUDE_DIRS)
+          set(_gss_flavour "GNU")
+          set(_gss_pc_requires ${_gnu_modname})
+          set(_gss_libname "gss")
+        endif()
       endif()
     endif()
 
@@ -189,9 +210,6 @@ if(NOT _gss_FOUND)  # Not found by pkg-c
       find_library(_gss_LIBRARIES NAMES ${_gss_libname} HINTS ${_gss_libdir_hints} PATH_SUFFIXES ${_gss_libdir_suffixes})
     endif()
   endif()
-  if(NOT _gss_flavour)
-    message(FATAL_ERROR "GNU or MIT GSS is required")
-  endif()
 else()
   # _gss_MODULE_NAME set since CMake 3.16.
   # _pkg_check_modules_pkg_name is undocumented and used as a fallback for CMake <3.16 versions.
@@ -202,15 +226,33 @@ else()
     set(_gss_flavour "MIT")
     set(_gss_pc_requires ${_mit_modname})
   else()
-    message(FATAL_ERROR "GNU or MIT GSS is required")
+    set(_gss_flavour "Heimdal")
+    set(_gss_pc_requires ${_heimdal_modname})
   endif()
   message(STATUS "Found GSS/${_gss_flavour} (via pkg-config): ${_gss_INCLUDE_DIRS} (found version \"${_gss_version}\")")
 endif()
 
 set(GSS_VERSION ${_gss_version})
 
-if(NOT GSS_VERSION)
-  if(_gss_flavour STREQUAL "MIT")
+if(_gss_flavour)
+  if(NOT GSS_VERSION AND _gss_flavour STREQUAL "Heimdal")
+    if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+      set(_heimdal_manifest_file "Heimdal.Application.amd64.manifest")
+    else()
+      set(_heimdal_manifest_file "Heimdal.Application.x86.manifest")
+    endif()
+
+    if(EXISTS "${_gss_INCLUDE_DIRS}/${_heimdal_manifest_file}")
+      file(STRINGS "${_gss_INCLUDE_DIRS}/${_heimdal_manifest_file}" _heimdal_version_str
+        REGEX "^.*version=\"[0-9]\\.[^\"]+\".*$")
+
+      string(REGEX MATCH "[0-9]\\.[^\"]+" GSS_VERSION "${_heimdal_version_str}")
+    endif()
+
+    if(NOT GSS_VERSION)
+      set(GSS_VERSION "Heimdal Unknown")
+    endif()
+  elseif(NOT GSS_VERSION AND _gss_flavour STREQUAL "MIT")
     if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.24)
       cmake_host_system_information(RESULT _mit_version QUERY WINDOWS_REGISTRY
         "HKLM/SOFTWARE/MIT/Kerberos/SDK/CurrentVersion" VALUE "VersionString")
@@ -223,7 +339,7 @@ if(NOT GSS_VERSION)
     else()
       set(GSS_VERSION "MIT Unknown")
     endif()
-  else()  # GNU
+  elseif(NOT GSS_VERSION AND _gss_flavour STREQUAL "GNU")
     if(_gss_INCLUDE_DIRS AND EXISTS "${_gss_INCLUDE_DIRS}/gss.h")
       set(_version_regex "#[\t ]*define[\t ]+GSS_VERSION[\t ]+\"([^\"]*)\"")
       file(STRINGS "${_gss_INCLUDE_DIRS}/gss.h" _version_str REGEX "${_version_regex}")
diff -Naurp curl-8.16.0/configure.ac curl-8.16.0_orig/configure.ac
--- curl-8.16.0/configure.ac	2025-11-11 08:59:46.795915379 +0000
+++ curl-8.16.0/configure.ac	2025-11-11 08:57:58.852575571 +0000
@@ -1860,14 +1860,21 @@ if test x"$want_gss" = xyes; then
       gnu_gss=yes
     ],
     [
-      dnl not found, check for MIT
+      dnl not found, check Heimdal or MIT
       AC_CHECK_HEADERS(
         [gssapi/gssapi.h gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
         [],
         [not_mit=1])
       if test "$not_mit" = "1"; then
-        dnl MIT not found
-        AC_MSG_ERROR([MIT or GNU GSS library required, but not found])
+        dnl MIT not found, check for Heimdal
+        AC_CHECK_HEADER(gssapi.h,
+          [],
+          [
+            dnl no header found, disabling GSS
+            want_gss=no
+            AC_MSG_WARN(disabling GSS-API support since no header files were found)
+          ]
+        )
       fi
     ]
   )
@@ -1877,7 +1884,7 @@ fi
 if test "$want_gss" = "yes"; then
   AC_DEFINE(HAVE_GSSAPI, 1, [if you have GSS-API libraries])
   HAVE_GSSAPI=1
-  curl_gss_msg="enabled (MIT Kerberos)"
+  curl_gss_msg="enabled (MIT Kerberos/Heimdal)"
   link_pkgconfig=''
 
   if test -n "$gnu_gss"; then
@@ -1956,6 +1963,8 @@ if test x"$want_gss" = xyes; then
   if test -n "$link_pkgconfig"; then
     if test -n "$gnu_gss"; then
       LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE gss"
+    elif test "x$not_mit" = "x1"; then
+      LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE heimdal-gssapi"
     else
       LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE mit-krb5-gssapi"
     fi
