efl/cmake/helpers/CommonHeaderChecks.cmake

96 lines
3.2 KiB
CMake

unset(HEADER_FILE_CONTENT CACHE)
macro(HEADER_CHECK header var)
CHECK_INCLUDE_FILE(${header} ${var})
if (${${var}})
set(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#define ${var} 1\n" CACHE INTERNAL "")
else()
set(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#undef ${var}\n" CACHE INTERNAL "")
endif()
endmacro()
macro(FUNC_CHECK func header var)
CHECK_SYMBOL_EXISTS(${func} ${header} ${var})
if (${${var}} )
set(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#define ${var} 1\n" CACHE INTERNAL "")
else()
set(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#undef ${var}\n" CACHE INTERNAL "")
endif()
endmacro()
macro(TYPE_CHECK func header var)
set(CMAKE_EXTRA_INCLUDE_FILES ${header})
CHECK_TYPE_SIZE(${func} ${var})
unset(CMAKE_EXTRA_INCLUDE_FILES)
if (${${var}} GREATER 0)
set(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#define ${var} 1\n" CACHE INTERNAL "")
else()
set(HEADER_FILE_CONTENT "${HEADER_FILE_CONTENT}#undef ${var}\n" CACHE INTERNAL "")
endif()
endmacro()
FUNC_CHECK(geteuid unistd.h HAVE_GETEUID)
FUNC_CHECK(getuid unistd.h HAVE_GETUID)
FUNC_CHECK(getpagesize unistd.h HAVE_GETPAGESIZE)
FUNC_CHECK(strlcpy bsd/string.h HAVE_STRLCPY)
FUNC_CHECK(mmap sys/mman.h HAVE_MMAP)
FUNC_CHECK(fchmod sys/stat.h HAVE_FCHMOD)
FUNC_CHECK(clock_gettime time.h HAVE_CLOCK_GETTIME)
FUNC_CHECK(fstatat sys/stat.h HAVE_ATFILE_SOURCE)
FUNC_CHECK(dirfd "dirent.h;sys/types.h" HAVE_DIRFD)
FUNC_CHECK(fpathconf "unistd.h" HAVE_FPATHCONF)
FUNC_CHECK(fpathconf "unistd.h" HAVE_FPATHCONF)
FUNC_CHECK(listxattr "sys/types.h;sys/xattr.h" HAVE_LISTXATTR)
FUNC_CHECK(setxattr "sys/types.h;sys/xattr.h" HAVE_SETXATTR)
FUNC_CHECK(getxattr "sys/types.h;sys/xattr.h" HAVE_GETXATTR)
set(CMAKE_REQUIRED_LIBRARIES "-ldl")
FUNC_CHECK(dlopen dlfcn.h HAVE_DLOPEN)
unset(CMAKE_REQUIRED_LIBRARIES)
FUNC_CHECK(mtrace mcheck.h HAVE_MTRACE)
FUNC_CHECK(strerror_r string.h HAVE_STRERROR_R)
set(CMAKE_REQUIRED_LIBRARIES "-lrt")
FUNC_CHECK(shm_open "sys/mman.h;sys/stat.h;fcntl.h" HAVE_SHM_OPEN)
set(CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE=1")
FUNC_CHECK(sched_getcpu sched.h HAVE_SCHED_GETCPU)
FUNC_CHECK(splice fcntl.h HAVE_SPLICE)
FUNC_CHECK(fcntl fcntl.h HAVE_FCNTL)
set(CMAKE_REQUIRED_LIBRARIES "-ldl")
FUNC_CHECK(dladdr dlfcn.h HAVE_DLADDR)
TYPE_CHECK(siginfo_t signal.h HAVE_SIGINFO_T)
HEADER_CHECK(stdlib.h HAVE_STDLIB_H)
HEADER_CHECK(sys/mman.h HAVE_SYS_MMAN_H)
HEADER_CHECK(dirent.h HAVE_DIRENT_H)
HEADER_CHECK(iconv.h HAVE_ICONV_H)
HEADER_CHECK(sys/auxv.h HAVE_SYS_AUXV_H)
HEADER_CHECK(asm/hwcap.h HAVE_ASM_HWCAP_H)
HEADER_CHECK(mcheck.h HAVE_MCHECK_H)
HEADER_CHECK(sys/types.h HAVE_SYS_TYPES_H)
HEADER_CHECK(execinfo.h HAVE_EXECINFO_H)
HEADER_CHECK(libunwind.h HAVE_UNWIND)
HEADER_CHECK(mtrace.h HAVE_MTRACE_H)
function(EFL_HEADER_CHECKS_FINALIZE file)
file(WRITE ${file}.new ${HEADER_FILE_CONTENT})
if (NOT EXISTS ${file})
file(RENAME ${file}.new ${file})
message(STATUS "${file} was generated.")
else()
file(MD5 ${file}.new _new_md5)
file(MD5 ${file} _old_md5)
if(_new_md5 STREQUAL _old_md5)
message(STATUS "${file} is unchanged.")
else()
file(REMOVE ${file})
file(RENAME ${file}.new ${file})
message(STATUS "${file} was updated.")
endif()
endif()
endfunction()