Commit 76e9af15 authored by Andy Cedilnik's avatar Andy Cedilnik

Add two commonly used modules. First one checks if the function exists, the...

Add two commonly used modules. First one checks if the function exists, the second one checks the size of type
parent 157e2b4a
#ifdef CHECK_FUNCTION_EXISTS
char CHECK_FUNCTION_EXISTS();
int main()
{
CHECK_FUNCTION_EXISTS();
return 0;
}
#else /* CHECK_FUNCTION_EXISTS */
# error "CHECK_FUNCTION_EXISTS has to specify the function"
#endif /* CHECK_FUNCTION_EXISTS */
#
# Check if the type exists and determine size of type. if the type
# exists, the size will be stored to the variable.
#
# CHECK_TYPE_SIZE - macro which checks the size of type
# VARIABLE - variable to store size if the type exists.
#
MACRO(CHECK_FUNCTION_EXISTS FUNCTION VARIABLE)
TRY_COMPILE(COMPILE_OK
${PROJECT_BINARY_DIR}
${CMAKE_ROOT}/Modules/CheckFunctionExists.c
COMPILE_DEFINITIONS -DCHECK_FUNCTION_EXISTS=${FUNCTION}
OUTPUT_VARIABLE OUTPUT)
IF(COMPILE_OK)
SET(${VARIABLE} ${COMPILE_OK})
ELSE(COMPILE_OK)
WRITE_FILE(${PROJECT_BINARY_DIR}/CMakeError.log
"Determining if the function ${FUNCTION} exists failed with the following output:\n"
"${OUTPUT}\n")
ENDIF(COMPILE_OK)
ENDMACRO(CHECK_FUNCTION_EXISTS)
#ifdef CHECK_SIZE_OF
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif /* HAVE_SYS_TYPES_H */
#ifdef HAVE_STDINT_H
# include <stdint.h>
#endif /* HAVE_STDINT_H */
int main()
{
return sizeof(CHECK_SIZE_OF);
}
#else /* CHECK_SIZE_OF */
# error "CHECK_SIZE_OF has to specify the type"
#endif /* CHECK_SIZE_OF */
#
# Check if the type exists and determine size of type. if the type
# exists, the size will be stored to the variable.
#
# CHECK_TYPE_SIZE - macro which checks the size of type
# VARIABLE - variable to store size if the type exists.
#
MACRO(CHECK_TYPE_SIZE TYPE VARIABLE)
TRY_RUN(RUN_RESULT COMPILE_OK
${PROJECT_BINARY_DIR}
${CMAKE_ROOT}/Modules/CheckSizeOf.c
COMPILE_DEFINITIONS -DCHECK_SIZE_OF="${TYPE}"
OUTPUT_VARIABLE OUTPUT)
IF(COMPILE_OK)
SET(${VARIABLE} ${RUN_RESULT})
ELSE(COMPILE_OK)
WRITE_FILE(${PROJECT_BINARY_DIR}/CMakeError.log
"Determining size of ${TYPE} failed with the following output:\n${OUTPUT}\n")
ENDIF(COMPILE_OK)
ENDMACRO(CHECK_TYPE_SIZE)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment