message(STATUS "Checking whether system has ANSI C header files")

include(CheckPrototypeExists)
include(CheckIncludeFiles)

check_include_files("dlfcn.h;stdint.h;stddef.h;inttypes.h;stdlib.h;strings.h;string.h;float.h" StandardHeadersExist)

if (StandardHeadersExist)
  check_prototype_exists(memchr string.h memchrExists)
  if (memchrExists)
    check_prototype_exists(free stdlib.h freeExists)
    if (freeExists)
      message(STATUS "ANSI C header files - found")
      set(STDC_HEADERS    1 CACHE INTERNAL "System has ANSI C header files")
      set(HAVE_STRINGS_H  1)
      set(HAVE_STRING_H   1)
      set(HAVE_FLOAT_H    1)
      set(HAVE_STDLIB_H   1)
      set(HAVE_STDDEF_H   1)
      set(HAVE_STDINT_H   1)
      set(HAVE_INTTYPES_H 1)
      set(HAVE_DLFCN_H    1)
    endif ()
  endif ()
endif ()

if (NOT STDC_HEADERS)
  message(STATUS "ANSI C header files - not found")
  set(STDC_HEADERS 0 CACHE INTERNAL "System has ANSI C header files")
endif ()

if (UNIX)
  set(CMAKE_REQUIRED_LIBRARIES "m")
endif ()

check_include_files(unistd.h HAVE_UNISTD_H)

include(CheckDIRSymbolExists)
check_dirsymbol_exists("sys/stat.h;sys/types.h;dirent.h" HAVE_DIRENT_H)
if (HAVE_DIRENT_H)
  set(HAVE_SYS_STAT_H  1)
  set(HAVE_SYS_TYPES_H 1)
endif ()

if (NOT WIN32)
  set(HAVE_LIBM 1)
endif ()
