Add two commonly used modules. First one checks if the function exists, the second one checks the size of type

This commit is contained in:
Andy Cedilnik 2002-09-20 13:16:50 -04:00
parent 157e2b4ac3
commit 76e9af1575
4 changed files with 78 additions and 0 deletions

View File

@ -0,0 +1,15 @@
#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 */

View File

@ -0,0 +1,22 @@
#
# 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)

20
Modules/CheckSizeOf.c Normal file
View File

@ -0,0 +1,20 @@
#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 */

21
Modules/CheckSizeOf.cmake Normal file
View File

@ -0,0 +1,21 @@
#
# 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)