Add a few new CMake modules, that will change the way of configure:
ompi_define.cmake: a few macros for write the configure template file in different ways. ompi_base_checks.cmake: defines a few wrapper macros for CMake checks. This commit was SVN r22451.
Этот коммит содержится в:
родитель
59d74f73d8
Коммит
949dfd2ab3
56
contrib/platform/win32/CMakeModules/check_bool.cmake
Обычный файл
56
contrib/platform/win32/CMakeModules/check_bool.cmake
Обычный файл
@ -0,0 +1,56 @@
|
||||
#
|
||||
# Copyright (c) 2010 High Performance Computing Center Stuttgart,
|
||||
# University of Stuttgart. All rights reserved.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
# Additional copyrights may follow
|
||||
#
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
|
||||
# check compiler support of bool and
|
||||
# possibly get its size and alignment
|
||||
MACRO(OMPI_CHECK_BOOL)
|
||||
|
||||
FOREACH(LANG c cxx)
|
||||
|
||||
STRING(TOUPPER ${LANG} LANG_U)
|
||||
|
||||
IF(NOT DEFINED SIZEOF_${LANG_U}_BOOL)
|
||||
|
||||
MESSAGE( STATUS "Checking size of ${LANG} bool...")
|
||||
|
||||
FILE (WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_sizeof_bool.${LANG}"
|
||||
"#include <stdio.h>
|
||||
int main() {return sizeof(bool);}
|
||||
")
|
||||
|
||||
TRY_RUN(SIZEOF_${LANG_U}_BOOL COMPILE_RESULT "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/"
|
||||
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_sizeof_bool.${LANG}")
|
||||
|
||||
IF(SIZEOF_${LANG_U}_BOOL GREATER 0)
|
||||
MESSAGE(STATUS "Checking size of ${LANG} bool...${SIZEOF_${LANG_U}_BOOL}")
|
||||
C_GET_ALIGNMENT(bool ${LANG} BOOL)
|
||||
SET(OPAL_ALIGNMENT_${LANG_U}_BOOL ${OPAL_ALIGNMENT_BOOL} CACHE INTERNAL "Sizeof ${LANG} bool.")
|
||||
ELSE(SIZEOF_${LANG_U}_BOOL GREATER 0)
|
||||
MESSAGE(STATUS "Checking size of ${LANG} bool...failed")
|
||||
SET(SIZEOF_${LANG_U}_BOOL 1 CACHE INTERNAL "Sizeof ${LANG} bool.")
|
||||
SET(OPAL_ALIGNMENT_${LANG_U}_BOOL 1 CACHE INTERNAL "Sizeof ${LANG} bool.")
|
||||
SET(OPAL_NEED_${LANG_U}_BOOL 1 CACHE INTERNAL "true if compiler doesn't support bool.")
|
||||
ENDIF(SIZEOF_${LANG_U}_BOOL GREATER 0)
|
||||
|
||||
ENDIF(NOT DEFINED SIZEOF_${LANG_U}_BOOL)
|
||||
|
||||
OMPI_DEF_VAR(OPAL_NEED_${LANG_U}_BOOL
|
||||
"Define to 1 if the C compiler doesn't support bool\n without any other help (such as <stdbool.h>)." 0 0)
|
||||
OMPI_DEF_VAR(SIZEOF_${LANG_U}_BOOL "The size of ${LANG} `bool'." 0 1)
|
||||
OMPI_DEF_VAR(OPAL_ALIGNMENT_${LANG_U}_BOOL "Alignment of ${LANG} `bool'." 0 1)
|
||||
|
||||
ENDFOREACH(LANG c cxx)
|
||||
|
||||
# Opal defines these without language type....
|
||||
OMPI_DEF(SIZEOF_BOOL 1 "The size of `bool'." 0 1)
|
||||
OMPI_DEF(OPAL_ALIGNMENT_BOOL 1 "Sizeof bool." 0 1)
|
||||
|
||||
ENDMACRO(OMPI_CHECK_BOOL)
|
98
contrib/platform/win32/CMakeModules/ompi_base_checks.cmake
Обычный файл
98
contrib/platform/win32/CMakeModules/ompi_base_checks.cmake
Обычный файл
@ -0,0 +1,98 @@
|
||||
#
|
||||
# Copyright (c) 2010 High Performance Computing Center Stuttgart,
|
||||
# University of Stuttgart. All rights reserved.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
# Additional copyrights may follow
|
||||
#
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
# this file contains
|
||||
# 1. several wrappers for CMake macros, so that they will
|
||||
# do the job and write the configure temeplate file too.
|
||||
# 2. a few macros that checks the
|
||||
|
||||
# check include file
|
||||
MACRO(OMPI_CHECK_INCLUDE_FILE FILE_NAME VAR_NAME)
|
||||
|
||||
CHECK_INCLUDE_FILE(${FILE_NAME} ${VAR_NAME})
|
||||
OMPI_DEF_VAR(${VAR_NAME} "Define to 1 if you have <${FILE_NAME}> header file." 0 0)
|
||||
|
||||
ENDMACRO(OMPI_CHECK_INCLUDE_FILE FILE_NAME VAR_NAME)
|
||||
|
||||
|
||||
# check if function exists
|
||||
MACRO(OMPI_CHECK_FUNCTION_EXISTS FUNCTION_NAME VAR_NAME)
|
||||
|
||||
CHECK_FUNCTION_EXISTS(${FUNCTION_NAME} ${VAR_NAME})
|
||||
OMPI_DEF_VAR(${VAR_NAME} "Define to 1 if you have the `${FUNCTION_NAME}' function." 0 0)
|
||||
|
||||
ENDMACRO(OMPI_CHECK_FUNCTION_EXISTS FUNCTION_NAME VAR_NAME)
|
||||
|
||||
|
||||
# check if symbol exists
|
||||
MACRO(OMPI_CHECK_SYMBOL_EXISTS SYMBOL_NAME FILE_NAMES VAR_NAME)
|
||||
|
||||
CHECK_SYMBOL_EXISTS(${SYMBOL_NAME} "${FILE_NAMES}" ${VAR_NAME})
|
||||
OMPI_DEF_VAR(${VAR_NAME} "Define to 1 if you have the `${SYMBOL_NAME}' function." 0 0)
|
||||
|
||||
ENDMACRO(OMPI_CHECK_SYMBOL_EXISTS SYMBOL_NAME FILE_NAMES VAR_NAME)
|
||||
|
||||
|
||||
# check if structure has member
|
||||
MACRO(OMPI_CHECK_STRUCT_HAS_MEMBER STRUC_NAME MEMBER_NAME FILE_NAMES VAR_NAME)
|
||||
|
||||
CHECK_SYMBOL_EXISTS(${STRUC_NAME} ${MEMBER_NAME} "${FILE_NAMES}" ${VAR_NAME})
|
||||
OMPI_DEF_VAR(${VAR_NAME} "Define to 1 if `${MEMBER_NAME}' is member of ${STRUC_NAME}." 0 0)
|
||||
|
||||
ENDMACRO(OMPI_CHECK_STRUCT_HAS_MEMBER STRUC_NAME MEMBER_NAME FILE_NAMES VAR_NAME)
|
||||
|
||||
|
||||
# check type size and alignment
|
||||
MACRO(OMPI_CHECK_TYPES TYPE_NAME VAR_NAME DEFAULT_TYPE LAN)
|
||||
|
||||
CHECK_TYPE_SIZE(${TYPE_NAME} ${VAR_NAME})
|
||||
|
||||
IF(NOT ${VAR_NAME}_CHECK_DONE)
|
||||
|
||||
IF (HAVE_${VAR_NAME})
|
||||
SET(SIZEOF_${VAR_NAME} ${${VAR_NAME}} CACHE INTERNAL "Size of `${TYPE_NAME}'")
|
||||
C_GET_ALIGNMENT(${TYPE_NAME} ${LAN} ${VAR_NAME})
|
||||
ELSE(HAVE_${VAR_NAME})
|
||||
IF(NOT ${DEFAULT_TYPE} STREQUAL "" AND NOT ${DEFAULT_TYPE} STREQUAL "none")
|
||||
|
||||
#Get the variable name of the default type size.
|
||||
STRING(TOUPPER "${DEFAULT_TYPE}" DEFAULT_TYPE_VAR)
|
||||
STRING(REPLACE " " "_" DEFAULT_TYPE_VAR ${DEFAULT_TYPE_VAR})
|
||||
|
||||
IF(${SIZEOF_${DEFAULT_TYPE_VAR}} GREATER 0)
|
||||
MESSAGE(STATUS "Define it as '${DEFAULT_TYPE}'.")
|
||||
|
||||
SET(${TYPE_NAME} ${DEFAULT_TYPE} CACHE INTERNAL "System support type for `${TYPE_NAME}'")
|
||||
SET(SIZEOF_${VAR_NAME} ${SIZEOF_${DEFAULT_TYPE_VAR}} CACHE INTERNAL "Size of `${TYPE_NAME}'")
|
||||
SET(OPAL_ALIGNMENT_${VAR_NAME} ${OPAL_ALIGNMENT_${DEFAULT_TYPE_VAR}})
|
||||
ENDIF(${SIZEOF_${DEFAULT_TYPE_VAR}} GREATER 0)
|
||||
|
||||
ENDIF(NOT ${DEFAULT_TYPE} STREQUAL "" AND NOT ${DEFAULT_TYPE} STREQUAL "none")
|
||||
ENDIF (HAVE_${VAR_NAME})
|
||||
|
||||
SET(${VAR_NAME}_CHECK_DONE 1 CACHE INTERNAL "check for `${VAR_NAME}' is done.")
|
||||
|
||||
ENDIF(NOT ${VAR_NAME}_CHECK_DONE)
|
||||
|
||||
IF(NOT ${DEFAULT_TYPE} STREQUAL "" AND NOT ${DEFAULT_TYPE} STREQUAL "none")
|
||||
OMPI_DEF_VAR(${TYPE_NAME} "Define to `${DEFAULT_TYPE}' if system types does not define." 0 0)
|
||||
ENDIF(NOT ${DEFAULT_TYPE} STREQUAL "" AND NOT ${DEFAULT_TYPE} STREQUAL "none")
|
||||
|
||||
#CMake automatically sets the HAVE_type to TURE or FALSE,
|
||||
#but we need a number.
|
||||
IF(HAVE_${VAR_NAME})
|
||||
SET(HAVE_${VAR_NAME} 1)
|
||||
ENDIF(HAVE_${VAR_NAME})
|
||||
|
||||
OMPI_DEF_VAR(SIZEOF_${VAR_NAME} "The size of `${TYPE_NAME}'" 0 0)
|
||||
OMPI_DEF_VAR(HAVE_${VAR_NAME} "Define to 1 if the system has the type `${TYPE_NAME}'" 0 0)
|
||||
OMPI_DEF_VAR(OPAL_ALIGNMENT_${VAR_NAME} "Alignment of type `${TYPE_NAME}'." 0 0)
|
||||
|
||||
ENDMACRO(OMPI_CHECK_TYPES TYPE VAR_NAME DEFAULT_TYPE LAN)
|
123
contrib/platform/win32/CMakeModules/ompi_define.cmake
Обычный файл
123
contrib/platform/win32/CMakeModules/ompi_define.cmake
Обычный файл
@ -0,0 +1,123 @@
|
||||
#
|
||||
# Copyright (c) 2010 High Performance Computing Center Stuttgart,
|
||||
# University of Stuttgart. All rights reserved.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
# Additional copyrights may follow
|
||||
#
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
#Generate content for opal_config.h.cmake
|
||||
#
|
||||
# NAME: name of the variable to be defined in configure file
|
||||
# VALUE: value to be defined for the variable
|
||||
# DESC: description of the definition
|
||||
# IS_STR: whether this variable should be defined with quotation marks
|
||||
# FORCE_DEF: whether use "#cmakedefiine" or just "#define" in the line
|
||||
# VAR_FORMAT: whether we should use the variable name instead of the value
|
||||
# in the template file.
|
||||
|
||||
MACRO(APPEND_CONFIG_FILE NAME VALUE DESC IS_STR FORCE_DEF VAR_FORMAT)
|
||||
|
||||
#We don't want to always generate the template file, but only when required.
|
||||
IF(NOT WRITE_CONFIG_DONE)
|
||||
|
||||
UNSET(APPEND_STRING)
|
||||
|
||||
IF(${VAR_FORMAT})
|
||||
IF(${IS_STR})
|
||||
IF(${FORCE_DEF})
|
||||
SET(APPEND_STRING "/* ${DESC} */\n#define ${NAME} \"\${${NAME}}\"\n\n")
|
||||
ELSE(${FORCE_DEF})
|
||||
SET(APPEND_STRING "/* ${DESC} */\n#cmakedefine ${NAME} \"\${${NAME}}\"\n\n")
|
||||
ENDIF(${FORCE_DEF})
|
||||
ELSE(${IS_STR})
|
||||
IF(${FORCE_DEF})
|
||||
SET(APPEND_STRING "/* ${DESC} */\n#define ${NAME} \${${NAME}}\n\n")
|
||||
ELSE(${FORCE_DEF})
|
||||
SET(APPEND_STRING "/* ${DESC} */\n#cmakedefine ${NAME} \${${NAME}}\n\n")
|
||||
ENDIF(${FORCE_DEF})
|
||||
ENDIF(${IS_STR})
|
||||
ELSE(${VAR_FORMAT})
|
||||
IF(${IS_STR})
|
||||
IF(${FORCE_DEF})
|
||||
SET(APPEND_STRING "/* ${DESC} */\n#define ${NAME} \"${VALUE}\"\n\n")
|
||||
ELSE(${FORCE_DEF})
|
||||
SET(APPEND_STRING "/* ${DESC} */\n#cmakedefine ${NAME} \"${VALUE}\"\n\n")
|
||||
ENDIF(${FORCE_DEF})
|
||||
ELSE(${IS_STR})
|
||||
IF(${FORCE_DEF})
|
||||
SET(APPEND_STRING "/* ${DESC} */\n#define ${NAME} ${VALUE}\n\n")
|
||||
ELSE(${FORCE_DEF})
|
||||
SET(APPEND_STRING "/* ${DESC} */\n#cmakedefine ${NAME} ${VALUE}\n\n")
|
||||
ENDIF(${FORCE_DEF})
|
||||
ENDIF(${IS_STR})
|
||||
ENDIF(${VAR_FORMAT})
|
||||
|
||||
FILE(APPEND ${OpenMPI_BINARY_DIR}/opal/include/opal_config.h.cmake
|
||||
${APPEND_STRING})
|
||||
ENDIF(NOT WRITE_CONFIG_DONE)
|
||||
|
||||
ENDMACRO(APPEND_CONFIG_FILE NAME VALUE DESC IS_STR FORCE_DEF VAR_FORMAT)
|
||||
|
||||
|
||||
#define a name with value and
|
||||
#write the line in template file.
|
||||
MACRO(OMPI_DEF NAME VALUE DESC IS_STR FORCE_DEF)
|
||||
|
||||
SET(${NAME} ${VALUE})
|
||||
|
||||
APPEND_CONFIG_FILE(${NAME} ${VALUE} ${DESC} ${IS_STR} ${FORCE_DEF} 0)
|
||||
|
||||
ENDMACRO(OMPI_DEF NAME VALUE DESC IS_STR FORCE_DEF)
|
||||
|
||||
|
||||
#define a name with variable and
|
||||
#write the line in template file.
|
||||
MACRO(OMPI_DEF_VAR NAME DESC IS_STR FORCE_DEF)
|
||||
|
||||
APPEND_CONFIG_FILE(${NAME} "" ${DESC} ${IS_STR} ${FORCE_DEF} 1)
|
||||
|
||||
ENDMACRO(OMPI_DEF_VAR NAME DESC IS_STR FORCE_DEF)
|
||||
|
||||
|
||||
#define/cache a name with value and
|
||||
#write the line in template file.
|
||||
MACRO(OMPI_DEF_CACHE NAME VALUE CACHE_TYPE DESC IS_STR FORCE_DEF)
|
||||
|
||||
SET(${NAME} ${VALUE} CACHE ${CACHE_TYPE} "${DESC}")
|
||||
|
||||
APPEND_CONFIG_FILE(${NAME} ${VALUE} ${DESC} ${IS_STR} ${FORCE_DEF} 0)
|
||||
|
||||
ENDMACRO(OMPI_DEF_CACHE NAME VALUE OPT DESC IS_STR FORCE_DEF)
|
||||
|
||||
|
||||
#define/cache a name with variable and
|
||||
#write the line in template file.
|
||||
MACRO(OMPI_DEF_CACHE_VAR NAME VALUE CACHE_TYPE DESC IS_STR FORCE_DEF)
|
||||
|
||||
SET(${NAME} ${VALUE} CACHE ${CACHE_TYPE} "${DESC}")
|
||||
|
||||
APPEND_CONFIG_FILE(${NAME} "" ${DESC} ${IS_STR} ${FORCE_DEF} 1)
|
||||
|
||||
ENDMACRO(OMPI_DEF_CACHE_VAR NAME VALUE OPT DESC IS_STR FORCE_DEF)
|
||||
|
||||
|
||||
#add an configure option and
|
||||
#write the line in template file.
|
||||
MACRO(OMPI_DEF_OPT NAME DESC DEFAULT_VAL)
|
||||
|
||||
UNSET(APPEND_STRING)
|
||||
|
||||
OPTION(${NAME} "${DESC}" ${DEFAULT_VAL})
|
||||
|
||||
IF(${${NAME}} STREQUAL "OFF")
|
||||
SET(${NAME} 0)
|
||||
ELSE(${${NAME}} STREQUAL "OFF")
|
||||
SET(${NAME} 1)
|
||||
ENDIF(${${NAME}} STREQUAL "OFF")
|
||||
|
||||
OMPI_DEF_VAR(${NAME} "${DESC}" 0 1)
|
||||
|
||||
ENDMACRO(OMPI_DEF_OPT NAME DESC DEFAULT_VAL)
|
Загрузка…
x
Ссылка в новой задаче
Block a user