PROJECT (INCLUDES) # auto-generated header with sizeof magic INCLUDE(CheckTypeSize) CHECK_TYPE_SIZE(short SIZE_SHORT) MATH(EXPR SHORTLESS ${SIZE_SHORT}-1) CHECK_TYPE_SIZE(int SIZE_INT) MATH(EXPR INTLESS ${SIZE_INT}-1) CHECK_TYPE_SIZE(long SIZE_LONG) MATH(EXPR LONGLESS ${SIZE_LONG}-1) CHECK_TYPE_SIZE("long long" SIZE_LLONG) MATH(EXPR LLONGLESS ${SIZE_LLONG}-1) CHECK_TYPE_SIZE(float SIZE_FLOAT) MATH(EXPR FLOATLESS ${SIZE_FLOAT}-1) CHECK_TYPE_SIZE(double SIZE_DOUBLE) MATH(EXPR DOUBLELESS ${SIZE_DOUBLE}-1) CHECK_TYPE_SIZE("char*" SIZE_PTR) MATH(EXPR PTRLESS ${SIZE_PTR}-1) CONFIGURE_FILE( align.h.in align.h) #SET_SOURCE_FILES_PROPERTIES(align.h PROPERTIES GENERATED 1) TRY_COMPILE(VA_LIST_IS_ARRAY ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/test_VA_LIST_IS_ARRAY.c) # invert the result, has the condition IFF compiler fails. There must be a simple way to say a=!b... but how? IF(VA_LIST_IS_ARRAY) SET(VA_LIST_IS_ARRAY FALSE) else(VA_LIST_IS_ARRAY) SET(VA_LIST_IS_ARRAY TRUE) endif(VA_LIST_IS_ARRAY) TRY_COMPILE(HAVE_MLOCKALL ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/test_HAVE_MLOCKALL.c) INCLUDE(TestBigEndian) TEST_BIG_ENDIAN(WORDS_BIGENDIAN) TRY_RUN(BITFIELDS_HTOL TEST_DUMMY ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/test_BITFIELDS_HTOL.c) FIND_FILE(HAVE_WAIT_H "wait.h") FIND_FILE(HAVE_SYS_WAIT_H "sys/wait.h") TRY_COMPILE(HAVE_UNION_WAIT ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/test_UNION_WAIT.c ) # disabled, though the alternative works on cygwin and both headers are present # there. #IF(NOT HAVE_UNION_WAIT) # TRY_COMPILE(HAVE_UNION_WAIT ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/test_SYS_UNION_WAIT.c ) #MESSAGE("syswait: ${HAVE_UNION_WAIT}") #ENDIF(NOT HAVE_UNION_WAIT) SET(HAVE_GETNAMEINFO true) SET(HAVE_INET_NTOA true) IF (WIN32) # workaround for cygwin SET(HAVE_GETNAMEINFO false) SET(HAVE_INET_NTOA false) ENDIF (WIN32) # workaround for cygwin ##INCLUDE(CheckCSourceCompiles) ##SET(TESTSRC " ###include ##int main() { return sizeof(blksize_t); } ##") ##CHECK_C_SOURCE_COMPILES("${TESTSRC}" HAVE_NATIVE_BLKSIZE_T) ##IF(HAVE_NATIVE_BLKSIZE_T) ## SET(HAVE_NATIVE_BLKSIZE_T "/* provides blksize_t*/") ##ELSE(HAVE_NATIVE_BLKSIZE_T) ## SET(HAVE_NATIVE_BLKSIZE_T " ###define blksize_t long ##") ##ENDIF(HAVE_NATIVE_BLKSIZE_T) CONFIGURE_FILE( xconfig.h.in xconfig.h)