--- a/configure.cmake
+++ b/configure.cmake
@@ -1107,9 +1107,12 @@ SET(CMAKE_EXTRA_INCLUDE_FILES)
 CHECK_STRUCT_HAS_MEMBER("struct dirent" d_ino "dirent.h"  STRUCT_DIRENT_HAS_D_INO)
 CHECK_STRUCT_HAS_MEMBER("struct dirent" d_namlen "dirent.h"  STRUCT_DIRENT_HAS_D_NAMLEN)
 SET(SPRINTF_RETURNS_INT 1)
-CHECK_INCLUDE_FILE(ucontext.h HAVE_UCONTEXT_H)
-IF(NOT HAVE_UCONTEXT_H)
-  CHECK_INCLUDE_FILE(sys/ucontext.h HAVE_UCONTEXT_H)
+CHECK_INCLUDE_FILE(ucontext.h HAVE_UCONTEXT_HEADER)
+IF(NOT HAVE_UCONTEXT_HEADER)
+  CHECK_INCLUDE_FILE(sys/ucontext.h HAVE_UCONTEXT_HEADER)
+ENDIF()
+IF(HAVE_UCONTEXT_HEADER)
+  CHECK_FUNCTION_EXISTS(makecontext HAVE_UCONTEXT_H)
 ENDIF()
 IF(HAVE_UCONTEXT_H)
   CHECK_FUNCTION_EXISTS(makecontext HAVE_UCONTEXT_H)
