mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-20 04:24:36 +08:00
Modules: Use new SOURCES_FROM_* try_compile (2/2)
Modify some additional modules that ship with CMake to use the new SOURCES_FROM_* arguments to try_compile / try_run as added by commitscb14ae2b87
(try_compile: Add SOURCE_FROM_{ARG,VAR}, 2022-09-21) and611d801790
(try_compile: Add SOURCE_FROM_FILE, 2022-09-22). This covers modules that need to read and alter a template source file, which were not addressed in the previous commit. Note that FindOpenACC.cmake does not actually need configure_file functionality; it appears to have inherited the (gratuitous) use thereof from FindOpenMP.cmake, with which its code bears significant similarity.
This commit is contained in:
@@ -54,8 +54,8 @@ macro(CHECK_INCLUDE_FILE INCLUDE VARIABLE)
|
|||||||
endif()
|
endif()
|
||||||
set(MACRO_CHECK_INCLUDE_FILE_FLAGS ${CMAKE_REQUIRED_FLAGS})
|
set(MACRO_CHECK_INCLUDE_FILE_FLAGS ${CMAKE_REQUIRED_FLAGS})
|
||||||
set(CHECK_INCLUDE_FILE_VAR ${INCLUDE})
|
set(CHECK_INCLUDE_FILE_VAR ${INCLUDE})
|
||||||
configure_file(${CMAKE_ROOT}/Modules/CheckIncludeFile.c.in
|
file(READ ${CMAKE_ROOT}/Modules/CheckIncludeFile.c.in _CIF_SOURCE_CONTENT)
|
||||||
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.c)
|
string(CONFIGURE "${_CIF_SOURCE_CONTENT}" _CIF_SOURCE_CONTENT)
|
||||||
if(NOT CMAKE_REQUIRED_QUIET)
|
if(NOT CMAKE_REQUIRED_QUIET)
|
||||||
message(CHECK_START "Looking for ${INCLUDE}")
|
message(CHECK_START "Looking for ${INCLUDE}")
|
||||||
endif()
|
endif()
|
||||||
@@ -93,7 +93,7 @@ macro(CHECK_INCLUDE_FILE INCLUDE VARIABLE)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
try_compile(${VARIABLE}
|
try_compile(${VARIABLE}
|
||||||
SOURCES ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.c
|
SOURCE_FROM_VAR CheckIncludeFile.c _CIF_SOURCE_CONTENT
|
||||||
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
|
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
|
||||||
${_CIF_LINK_OPTIONS}
|
${_CIF_LINK_OPTIONS}
|
||||||
${_CIF_LINK_LIBRARIES}
|
${_CIF_LINK_LIBRARIES}
|
||||||
|
@@ -53,8 +53,8 @@ macro(CHECK_INCLUDE_FILE_CXX INCLUDE VARIABLE)
|
|||||||
endif()
|
endif()
|
||||||
set(MACRO_CHECK_INCLUDE_FILE_FLAGS ${CMAKE_REQUIRED_FLAGS})
|
set(MACRO_CHECK_INCLUDE_FILE_FLAGS ${CMAKE_REQUIRED_FLAGS})
|
||||||
set(CHECK_INCLUDE_FILE_VAR ${INCLUDE})
|
set(CHECK_INCLUDE_FILE_VAR ${INCLUDE})
|
||||||
configure_file(${CMAKE_ROOT}/Modules/CheckIncludeFile.cxx.in
|
file(READ ${CMAKE_ROOT}/Modules/CheckIncludeFile.cxx.in _CIF_SOURCE_CONTENT)
|
||||||
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx)
|
string(CONFIGURE "${_CIF_SOURCE_CONTENT}" _CIF_SOURCE_CONTENT)
|
||||||
if(NOT CMAKE_REQUIRED_QUIET)
|
if(NOT CMAKE_REQUIRED_QUIET)
|
||||||
message(CHECK_START "Looking for C++ include ${INCLUDE}")
|
message(CHECK_START "Looking for C++ include ${INCLUDE}")
|
||||||
endif()
|
endif()
|
||||||
@@ -92,7 +92,7 @@ macro(CHECK_INCLUDE_FILE_CXX INCLUDE VARIABLE)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
try_compile(${VARIABLE}
|
try_compile(${VARIABLE}
|
||||||
SOURCES ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx
|
SOURCE_FROM_VAR CheckIncludeFile.cxx _CIF_SOURCE_CONTENT
|
||||||
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
|
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
|
||||||
${_CIF_LINK_OPTIONS}
|
${_CIF_LINK_OPTIONS}
|
||||||
${_CIF_LINK_LIBRARIES}
|
${_CIF_LINK_LIBRARIES}
|
||||||
|
@@ -94,13 +94,11 @@ function(check_prototype_definition _FUNCTION _PROTOTYPE _RETURN _HEADER _VARIAB
|
|||||||
set(CHECK_PROTOTYPE_DEFINITION_PROTO ${_PROTOTYPE})
|
set(CHECK_PROTOTYPE_DEFINITION_PROTO ${_PROTOTYPE})
|
||||||
set(CHECK_PROTOTYPE_DEFINITION_RETURN ${_RETURN})
|
set(CHECK_PROTOTYPE_DEFINITION_RETURN ${_RETURN})
|
||||||
|
|
||||||
configure_file("${__check_proto_def_dir}/CheckPrototypeDefinition.c.in"
|
file(READ ${__check_proto_def_dir}/CheckPrototypeDefinition.c.in _SOURCE)
|
||||||
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckPrototypeDefinition.c" @ONLY)
|
string(CONFIGURE "${_SOURCE}" _SOURCE @ONLY)
|
||||||
|
|
||||||
file(READ ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckPrototypeDefinition.c _SOURCE)
|
|
||||||
|
|
||||||
try_compile(${_VARIABLE}
|
try_compile(${_VARIABLE}
|
||||||
SOURCES ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckPrototypeDefinition.c
|
SOURCE_FROM_VAR CheckPrototypeDefinition.c _SOURCE
|
||||||
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
|
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
|
||||||
${CHECK_PROTOTYPE_DEFINITION_LINK_OPTIONS}
|
${CHECK_PROTOTYPE_DEFINITION_LINK_OPTIONS}
|
||||||
${CHECK_PROTOTYPE_DEFINITION_LIBS}
|
${CHECK_PROTOTYPE_DEFINITION_LIBS}
|
||||||
|
@@ -104,9 +104,9 @@ function(__check_type_size_impl type var map builtin language)
|
|||||||
|
|
||||||
# Perform language check
|
# Perform language check
|
||||||
if(language STREQUAL "C")
|
if(language STREQUAL "C")
|
||||||
set(src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${var}.c)
|
set(src ${var}.c)
|
||||||
elseif(language STREQUAL "CXX")
|
elseif(language STREQUAL "CXX")
|
||||||
set(src ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${var}.cpp)
|
set(src ${var}.cpp)
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "Unknown language:\n ${language}\nSupported languages: C, CXX.\n")
|
message(FATAL_ERROR "Unknown language:\n ${language}\nSupported languages: C, CXX.\n")
|
||||||
endif()
|
endif()
|
||||||
@@ -142,8 +142,9 @@ function(__check_type_size_impl type var map builtin language)
|
|||||||
|
|
||||||
# Perform the check.
|
# Perform the check.
|
||||||
set(bin ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${var}.bin)
|
set(bin ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckTypeSize/${var}.bin)
|
||||||
configure_file(${__check_type_size_dir}/CheckTypeSize.c.in ${src} @ONLY)
|
file(READ ${__check_type_size_dir}/CheckTypeSize.c.in src_content)
|
||||||
try_compile(HAVE_${var} SOURCES ${src}
|
string(CONFIGURE "${src_content}" src_content @ONLY)
|
||||||
|
try_compile(HAVE_${var} SOURCE_FROM_VAR "${src}" src_content
|
||||||
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
|
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
|
||||||
LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS}
|
LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS}
|
||||||
LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}
|
LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}
|
||||||
@@ -209,9 +210,8 @@ function(__check_type_size_impl type var map builtin language)
|
|||||||
if(NOT CMAKE_REQUIRED_QUIET)
|
if(NOT CMAKE_REQUIRED_QUIET)
|
||||||
message(CHECK_FAIL "failed")
|
message(CHECK_FAIL "failed")
|
||||||
endif()
|
endif()
|
||||||
file(READ ${src} content)
|
|
||||||
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
||||||
"Determining size of ${type} failed with the following output:\n${output}\n${src}:\n${content}\n\n")
|
"Determining size of ${type} failed with the following output:\n${output}\n${src}:\n${src_content}\n\n")
|
||||||
set(${var} "" CACHE INTERNAL "CHECK_TYPE_SIZE: ${type} unknown")
|
set(${var} "" CACHE INTERNAL "CHECK_TYPE_SIZE: ${type} unknown")
|
||||||
file(REMOVE ${map})
|
file(REMOVE ${map})
|
||||||
endif()
|
endif()
|
||||||
|
@@ -29,21 +29,19 @@ endif()
|
|||||||
if(MFC_ATTEMPT_TRY_COMPILE)
|
if(MFC_ATTEMPT_TRY_COMPILE)
|
||||||
if(NOT DEFINED MFC_HAVE_MFC)
|
if(NOT DEFINED MFC_HAVE_MFC)
|
||||||
set(CHECK_INCLUDE_FILE_VAR "afxwin.h")
|
set(CHECK_INCLUDE_FILE_VAR "afxwin.h")
|
||||||
configure_file(${CMAKE_ROOT}/Modules/CheckIncludeFile.cxx.in
|
file(READ ${CMAKE_ROOT}/Modules/CheckIncludeFile.cxx.in _CIF_SOURCE_CONTENT)
|
||||||
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx)
|
string(CONFIGURE "${_CIF_SOURCE_CONTENT}" _CIF_SOURCE_CONTENT)
|
||||||
message(CHECK_START "Looking for MFC")
|
message(CHECK_START "Looking for MFC")
|
||||||
# Try both shared and static as the root project may have set the /MT flag
|
# Try both shared and static as the root project may have set the /MT flag
|
||||||
try_compile(MFC_HAVE_MFC
|
try_compile(MFC_HAVE_MFC
|
||||||
SOURCES ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx
|
SOURCE_FROM_VAR CheckIncludeFile.cxx _CIF_SOURCE_CONTENT
|
||||||
CMAKE_FLAGS
|
CMAKE_FLAGS
|
||||||
-DCMAKE_MFC_FLAG:STRING=2
|
-DCMAKE_MFC_FLAG:STRING=2
|
||||||
-DCOMPILE_DEFINITIONS:STRING=-D_AFXDLL
|
-DCOMPILE_DEFINITIONS:STRING=-D_AFXDLL
|
||||||
OUTPUT_VARIABLE OUTPUT)
|
OUTPUT_VARIABLE OUTPUT)
|
||||||
if(NOT MFC_HAVE_MFC)
|
if(NOT MFC_HAVE_MFC)
|
||||||
configure_file(${CMAKE_ROOT}/Modules/CheckIncludeFile.cxx.in
|
|
||||||
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx)
|
|
||||||
try_compile(MFC_HAVE_MFC
|
try_compile(MFC_HAVE_MFC
|
||||||
SOURCES ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx
|
SOURCE_FROM_VAR CheckIncludeFile.cxx _CIF_SOURCE_CONTENT
|
||||||
CMAKE_FLAGS
|
CMAKE_FLAGS
|
||||||
-DCMAKE_MFC_FLAG:STRING=1
|
-DCMAKE_MFC_FLAG:STRING=1
|
||||||
OUTPUT_VARIABLE OUTPUT)
|
OUTPUT_VARIABLE OUTPUT)
|
||||||
|
@@ -1246,20 +1246,22 @@ function(_MPI_try_staged_settings LANG MPI_TEST_FILE_NAME MODE RUN_BINARY SUPPRE
|
|||||||
else() # F77 header
|
else() # F77 header
|
||||||
set(MPI_Fortran_INCLUDE_LINE "implicit none\n include 'mpif.h'")
|
set(MPI_Fortran_INCLUDE_LINE "implicit none\n include 'mpif.h'")
|
||||||
endif()
|
endif()
|
||||||
configure_file("${SRC_DIR}/${MPI_TEST_FILE_NAME}.f90.in" "${WORK_DIR}/${MPI_TEST_FILE_NAME}.f90" @ONLY)
|
file(READ "${SRC_DIR}/${MPI_TEST_FILE_NAME}.f90.in" MPI_TEST_SOURCE_CONTENT)
|
||||||
set(MPI_TEST_SOURCE_FILE "${WORK_DIR}/${MPI_TEST_FILE_NAME}.f90")
|
string(CONFIGURE "${MPI_TEST_SOURCE_CONTENT}" MPI_TEST_SOURCE_CONTENT)
|
||||||
|
set(MPI_TEST_SOURCE_FILE "${MPI_TEST_FILE_NAME}.f90")
|
||||||
elseif(LANG STREQUAL "CXX")
|
elseif(LANG STREQUAL "CXX")
|
||||||
configure_file("${SRC_DIR}/${MPI_TEST_FILE_NAME}.c" "${WORK_DIR}/${MPI_TEST_FILE_NAME}.cpp" COPYONLY)
|
file(READ "${SRC_DIR}/${MPI_TEST_FILE_NAME}.c" MPI_TEST_SOURCE_CONTENT)
|
||||||
set(MPI_TEST_SOURCE_FILE "${WORK_DIR}/${MPI_TEST_FILE_NAME}.cpp")
|
set(MPI_TEST_SOURCE_FILE "${MPI_TEST_FILE_NAME}.cpp")
|
||||||
if(MODE STREQUAL "TEST_MPICXX")
|
if(MODE STREQUAL "TEST_MPICXX")
|
||||||
set(MPI_TEST_COMPILE_DEFINITIONS TEST_MPI_MPICXX)
|
set(MPI_TEST_COMPILE_DEFINITIONS TEST_MPI_MPICXX)
|
||||||
endif()
|
endif()
|
||||||
else() # C
|
else() # C
|
||||||
set(MPI_TEST_SOURCE_FILE "${SRC_DIR}/${MPI_TEST_FILE_NAME}.c")
|
file(READ "${SRC_DIR}/${MPI_TEST_FILE_NAME}.c" MPI_TEST_SOURCE_CONTENT)
|
||||||
|
set(MPI_TEST_SOURCE_FILE "${MPI_TEST_FILE_NAME}.c")
|
||||||
endif()
|
endif()
|
||||||
if(RUN_BINARY)
|
if(RUN_BINARY)
|
||||||
try_run(MPI_RUN_RESULT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE} MPI_RESULT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE}
|
try_run(MPI_RUN_RESULT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE} MPI_RESULT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE}
|
||||||
SOURCES "${MPI_TEST_SOURCE_FILE}"
|
SOURCE_FROM_VAR "${MPI_TEST_SOURCE_FILE}" MPI_TEST_SOURCE_CONTENT
|
||||||
COMPILE_DEFINITIONS ${MPI_TEST_COMPILE_DEFINITIONS}
|
COMPILE_DEFINITIONS ${MPI_TEST_COMPILE_DEFINITIONS}
|
||||||
LINK_LIBRARIES MPI::MPI_${LANG}
|
LINK_LIBRARIES MPI::MPI_${LANG}
|
||||||
RUN_OUTPUT_VARIABLE MPI_RUN_OUTPUT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE}
|
RUN_OUTPUT_VARIABLE MPI_RUN_OUTPUT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE}
|
||||||
@@ -1267,7 +1269,7 @@ function(_MPI_try_staged_settings LANG MPI_TEST_FILE_NAME MODE RUN_BINARY SUPPRE
|
|||||||
set(MPI_RUN_OUTPUT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE} "${MPI_RUN_OUTPUT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE}}" PARENT_SCOPE)
|
set(MPI_RUN_OUTPUT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE} "${MPI_RUN_OUTPUT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE}}" PARENT_SCOPE)
|
||||||
else()
|
else()
|
||||||
try_compile(MPI_RESULT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE}
|
try_compile(MPI_RESULT_${LANG}_${MPI_TEST_FILE_NAME}_${MODE}
|
||||||
SOURCES "${MPI_TEST_SOURCE_FILE}"
|
SOURCE_FROM_VAR "${MPI_TEST_SOURCE_FILE}" MPI_TEST_SOURCE_CONTENT
|
||||||
COMPILE_DEFINITIONS ${MPI_TEST_COMPILE_DEFINITIONS}
|
COMPILE_DEFINITIONS ${MPI_TEST_COMPILE_DEFINITIONS}
|
||||||
LINK_LIBRARIES MPI::MPI_${LANG}
|
LINK_LIBRARIES MPI::MPI_${LANG}
|
||||||
COPY_FILE "${BIN_FILE}"
|
COPY_FILE "${BIN_FILE}"
|
||||||
|
@@ -128,21 +128,18 @@ set(OpenACC_Fortran_CHECK_VERSION_SOURCE
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
function(_OPENACC_WRITE_SOURCE_FILE LANG SRC_FILE_CONTENT_VAR SRC_FILE_NAME SRC_FILE_FULLPATH)
|
macro(_OPENACC_PREPARE_SOURCE LANG CONTENT_ID NAME_PREFIX FULLNAME_VAR CONTENT_VAR)
|
||||||
set(WORK_DIR ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindOpenACC)
|
|
||||||
if("${LANG}" STREQUAL "C")
|
if("${LANG}" STREQUAL "C")
|
||||||
set(SRC_FILE "${WORK_DIR}/${SRC_FILE_NAME}.c")
|
set(${FULLNAME_VAR} "${NAME_PREFIX}.c")
|
||||||
file(WRITE "${SRC_FILE}" "${OpenACC_C_CXX_${SRC_FILE_CONTENT_VAR}}")
|
set(${CONTENT_VAR} "${OpenACC_C_CXX_${CONTENT_ID}}")
|
||||||
elseif("${LANG}" STREQUAL "CXX")
|
elseif("${LANG}" STREQUAL "CXX")
|
||||||
set(SRC_FILE "${WORK_DIR}/${SRC_FILE_NAME}.cpp")
|
set(${FULLNAME_VAR} "${NAME_PREFIX}.cpp")
|
||||||
file(WRITE "${SRC_FILE}" "${OpenACC_C_CXX_${SRC_FILE_CONTENT_VAR}}")
|
set(${CONTENT_VAR} "${OpenACC_C_CXX_${CONTENT_ID}}")
|
||||||
elseif("${LANG}" STREQUAL "Fortran")
|
elseif("${LANG}" STREQUAL "Fortran")
|
||||||
set(SRC_FILE "${WORK_DIR}/${SRC_FILE_NAME}.F90")
|
set(${FULLNAME_VAR} "${NAME_PREFIX}.F90")
|
||||||
file(WRITE "${SRC_FILE}_in" "${OpenACC_Fortran_${SRC_FILE_CONTENT_VAR}}")
|
set(${CONTENT_VAR} "${OpenACC_Fortran_${CONTENT_ID}}")
|
||||||
configure_file("${SRC_FILE}_in" "${SRC_FILE}" @ONLY)
|
|
||||||
endif()
|
endif()
|
||||||
set(${SRC_FILE_FULLPATH} "${SRC_FILE}" PARENT_SCOPE)
|
endmacro()
|
||||||
endfunction()
|
|
||||||
|
|
||||||
|
|
||||||
function(_OPENACC_GET_FLAGS_CANDIDATE LANG FLAG_VAR)
|
function(_OPENACC_GET_FLAGS_CANDIDATE LANG FLAG_VAR)
|
||||||
@@ -184,10 +181,12 @@ endfunction()
|
|||||||
function(_OPENACC_GET_FLAGS LANG FLAG_VAR)
|
function(_OPENACC_GET_FLAGS LANG FLAG_VAR)
|
||||||
set(FLAG_CANDIDATES "")
|
set(FLAG_CANDIDATES "")
|
||||||
_OPENACC_GET_FLAGS_CANDIDATE("${LANG}" FLAG_CANDIDATES)
|
_OPENACC_GET_FLAGS_CANDIDATE("${LANG}" FLAG_CANDIDATES)
|
||||||
_OPENACC_WRITE_SOURCE_FILE("${LANG}" "TEST_SOURCE" OpenACCTryFlag _OPENACC_TEST_SRC)
|
_OPENACC_PREPARE_SOURCE("${LANG}" TEST_SOURCE OpenACCTryFlag
|
||||||
|
_OPENACC_TEST_SRC_NAME _OPENACC_TEST_SRC_CONTENT)
|
||||||
|
|
||||||
foreach(FLAG IN LISTS FLAG_CANDIDATES)
|
foreach(FLAG IN LISTS FLAG_CANDIDATES)
|
||||||
try_compile(OpenACC_FLAG_TEST_RESULT SOURCES ${_OPENACC_TEST_SRC}
|
try_compile(OpenACC_FLAG_TEST_RESULT
|
||||||
|
SOURCE_FROM_VAR "${_OPENACC_TEST_SRC_NAME}" _OPENACC_TEST_SRC_CONTENT
|
||||||
CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${FLAG}"
|
CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${FLAG}"
|
||||||
OUTPUT_VARIABLE OpenACC_TRY_COMPILE_OUTPUT
|
OUTPUT_VARIABLE OpenACC_TRY_COMPILE_OUTPUT
|
||||||
)
|
)
|
||||||
@@ -212,13 +211,15 @@ endfunction()
|
|||||||
|
|
||||||
|
|
||||||
function(_OPENACC_GET_SPEC_DATE LANG SPEC_DATE)
|
function(_OPENACC_GET_SPEC_DATE LANG SPEC_DATE)
|
||||||
_OPENACC_WRITE_SOURCE_FILE("${LANG}" "CHECK_VERSION_SOURCE" OpenACCCheckVersion _OPENACC_TEST_SRC)
|
_OPENACC_PREPARE_SOURCE(${LANG} CHECK_VERSION_SOURCE OpenACCCheckVersion
|
||||||
|
_OPENACC_TEST_SRC_NAME _OPENACC_TEST_SRC_CONTENT)
|
||||||
|
|
||||||
set(BIN_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindOpenACC/accver_${LANG}.bin")
|
set(BIN_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindOpenACC/accver_${LANG}.bin")
|
||||||
try_compile(OpenACC_SPECTEST_${LANG} SOURCES "${_OPENACC_TEST_SRC}"
|
try_compile(OpenACC_SPECTEST_${LANG}
|
||||||
CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OpenACC_${LANG}_FLAGS}"
|
SOURCE_FROM_VAR "${_OPENACC_TEST_SRC_NAME}" _OPENACC_TEST_SRC_CONTENT
|
||||||
COPY_FILE ${BIN_FILE}
|
CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OpenACC_${LANG}_FLAGS}"
|
||||||
OUTPUT_VARIABLE OUTPUT)
|
COPY_FILE "${BIN_FILE}"
|
||||||
|
OUTPUT_VARIABLE OUTPUT)
|
||||||
|
|
||||||
if(${OpenACC_SPECTEST_${LANG}})
|
if(${OpenACC_SPECTEST_${LANG}})
|
||||||
file(STRINGS ${BIN_FILE} specstr LIMIT_COUNT 1 REGEX "INFO:OpenACC-date")
|
file(STRINGS ${BIN_FILE} specstr LIMIT_COUNT 1 REGEX "INFO:OpenACC-date")
|
||||||
|
@@ -178,27 +178,25 @@ set(OpenMP_Fortran_TEST_SOURCE
|
|||||||
"
|
"
|
||||||
)
|
)
|
||||||
|
|
||||||
function(_OPENMP_WRITE_SOURCE_FILE LANG SRC_FILE_CONTENT_VAR SRC_FILE_NAME SRC_FILE_FULLPATH)
|
macro(_OPENMP_PREPARE_SOURCE LANG CONTENT_ID NAME_PREFIX FULLNAME_VAR CONTENT_VAR)
|
||||||
set(WORK_DIR ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindOpenMP)
|
|
||||||
if("${LANG}" STREQUAL "C")
|
if("${LANG}" STREQUAL "C")
|
||||||
set(SRC_FILE "${WORK_DIR}/${SRC_FILE_NAME}.c")
|
set(${FULLNAME_VAR} "${NAME_PREFIX}.c")
|
||||||
file(WRITE "${SRC_FILE}" "${OpenMP_C_CXX_${SRC_FILE_CONTENT_VAR}}")
|
set(${CONTENT_VAR} "${OpenMP_C_CXX_${CONTENT_ID}}")
|
||||||
elseif("${LANG}" STREQUAL "CXX")
|
elseif("${LANG}" STREQUAL "CXX")
|
||||||
set(SRC_FILE "${WORK_DIR}/${SRC_FILE_NAME}.cpp")
|
set(${FULLNAME_VAR} "${NAME_PREFIX}.cpp")
|
||||||
file(WRITE "${SRC_FILE}" "${OpenMP_C_CXX_${SRC_FILE_CONTENT_VAR}}")
|
set(${CONTENT_VAR} "${OpenMP_C_CXX_${CONTENT_ID}}")
|
||||||
elseif("${LANG}" STREQUAL "Fortran")
|
elseif("${LANG}" STREQUAL "Fortran")
|
||||||
set(SRC_FILE "${WORK_DIR}/${SRC_FILE_NAME}.f90")
|
set(${FULLNAME_VAR} "${NAME_PREFIX}.F90")
|
||||||
file(WRITE "${SRC_FILE}_in" "${OpenMP_Fortran_${SRC_FILE_CONTENT_VAR}}")
|
string(CONFIGURE "${OpenMP_Fortran_${CONTENT_ID}}" ${CONTENT_VAR} @ONLY)
|
||||||
configure_file("${SRC_FILE}_in" "${SRC_FILE}" @ONLY)
|
|
||||||
endif()
|
endif()
|
||||||
set(${SRC_FILE_FULLPATH} "${SRC_FILE}" PARENT_SCOPE)
|
endmacro()
|
||||||
endfunction()
|
|
||||||
|
|
||||||
include(${CMAKE_CURRENT_LIST_DIR}/CMakeParseImplicitLinkInfo.cmake)
|
include(${CMAKE_CURRENT_LIST_DIR}/CMakeParseImplicitLinkInfo.cmake)
|
||||||
|
|
||||||
function(_OPENMP_GET_FLAGS LANG FLAG_MODE OPENMP_FLAG_VAR OPENMP_LIB_NAMES_VAR)
|
function(_OPENMP_GET_FLAGS LANG FLAG_MODE OPENMP_FLAG_VAR OPENMP_LIB_NAMES_VAR)
|
||||||
_OPENMP_FLAG_CANDIDATES("${LANG}")
|
_OPENMP_FLAG_CANDIDATES("${LANG}")
|
||||||
_OPENMP_WRITE_SOURCE_FILE("${LANG}" "TEST_SOURCE" OpenMPTryFlag _OPENMP_TEST_SRC)
|
_OPENMP_PREPARE_SOURCE("${LANG}" TEST_SOURCE OpenMPTryFlag
|
||||||
|
_OPENMP_TEST_SRC_NAME _OPENMP_TEST_SRC_CONTENT)
|
||||||
|
|
||||||
unset(OpenMP_VERBOSE_COMPILE_OPTIONS)
|
unset(OpenMP_VERBOSE_COMPILE_OPTIONS)
|
||||||
separate_arguments(OpenMP_VERBOSE_OPTIONS NATIVE_COMMAND "${CMAKE_${LANG}_VERBOSE_FLAG}")
|
separate_arguments(OpenMP_VERBOSE_OPTIONS NATIVE_COMMAND "${CMAKE_${LANG}_VERBOSE_FLAG}")
|
||||||
@@ -215,7 +213,7 @@ function(_OPENMP_GET_FLAGS LANG FLAG_MODE OPENMP_FLAG_VAR OPENMP_LIB_NAMES_VAR)
|
|||||||
endif()
|
endif()
|
||||||
string(REGEX REPLACE "[-/=+]" "" OPENMP_PLAIN_FLAG "${OPENMP_FLAG}")
|
string(REGEX REPLACE "[-/=+]" "" OPENMP_PLAIN_FLAG "${OPENMP_FLAG}")
|
||||||
try_compile( OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG}
|
try_compile( OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG}
|
||||||
SOURCES ${_OPENMP_TEST_SRC}
|
SOURCE_FROM_VAR "${_OPENMP_TEST_SRC_NAME}" _OPENMP_TEST_SRC_CONTENT
|
||||||
CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OPENMP_FLAGS_TEST}"
|
CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OPENMP_FLAGS_TEST}"
|
||||||
LINK_LIBRARIES ${CMAKE_${LANG}_VERBOSE_FLAG}
|
LINK_LIBRARIES ${CMAKE_${LANG}_VERBOSE_FLAG}
|
||||||
OUTPUT_VARIABLE OpenMP_TRY_COMPILE_OUTPUT
|
OUTPUT_VARIABLE OpenMP_TRY_COMPILE_OUTPUT
|
||||||
@@ -313,7 +311,7 @@ function(_OPENMP_GET_FLAGS LANG FLAG_MODE OPENMP_FLAG_VAR OPENMP_LIB_NAMES_VAR)
|
|||||||
# explicitly add a search path if the header can't be found on the
|
# explicitly add a search path if the header can't be found on the
|
||||||
# default header search path already.
|
# default header search path already.
|
||||||
try_compile( OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG}
|
try_compile( OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG}
|
||||||
SOURCES ${_OPENMP_TEST_SRC}
|
SOURCE_FROM_VAR "${_OPENMP_TEST_SRC_NAME}" _OPENMP_TEST_SRC_CONTENT
|
||||||
CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OPENMP_FLAGS_TEST}"
|
CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OPENMP_FLAGS_TEST}"
|
||||||
LINK_LIBRARIES ${CMAKE_${LANG}_VERBOSE_FLAG} ${OpenMP_libomp_LIBRARY}
|
LINK_LIBRARIES ${CMAKE_${LANG}_VERBOSE_FLAG} ${OpenMP_libomp_LIBRARY}
|
||||||
OUTPUT_VARIABLE OpenMP_TRY_COMPILE_OUTPUT
|
OUTPUT_VARIABLE OpenMP_TRY_COMPILE_OUTPUT
|
||||||
@@ -324,7 +322,7 @@ function(_OPENMP_GET_FLAGS LANG FLAG_MODE OPENMP_FLAG_VAR OPENMP_LIB_NAMES_VAR)
|
|||||||
set(OpenMP_${LANG}_INCLUDE_DIR "${OpenMP_${LANG}_INCLUDE_DIR}" PARENT_SCOPE)
|
set(OpenMP_${LANG}_INCLUDE_DIR "${OpenMP_${LANG}_INCLUDE_DIR}" PARENT_SCOPE)
|
||||||
if(OpenMP_${LANG}_INCLUDE_DIR)
|
if(OpenMP_${LANG}_INCLUDE_DIR)
|
||||||
try_compile( OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG}
|
try_compile( OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG}
|
||||||
SOURCES ${_OPENMP_TEST_SRC}
|
SOURCE_FROM_VAR "${_OPENMP_TEST_SRC_NAME}" _OPENMP_TEST_SRC_CONTENT
|
||||||
CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OPENMP_FLAGS_TEST}"
|
CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OPENMP_FLAGS_TEST}"
|
||||||
"-DINCLUDE_DIRECTORIES:STRING=${OpenMP_${LANG}_INCLUDE_DIR}"
|
"-DINCLUDE_DIRECTORIES:STRING=${OpenMP_${LANG}_INCLUDE_DIR}"
|
||||||
LINK_LIBRARIES ${CMAKE_${LANG}_VERBOSE_FLAG} ${OpenMP_libomp_LIBRARY}
|
LINK_LIBRARIES ${CMAKE_${LANG}_VERBOSE_FLAG} ${OpenMP_libomp_LIBRARY}
|
||||||
@@ -347,7 +345,7 @@ function(_OPENMP_GET_FLAGS LANG FLAG_MODE OPENMP_FLAG_VAR OPENMP_LIB_NAMES_VAR)
|
|||||||
mark_as_advanced(OpenMP_libomp_LIBRARY)
|
mark_as_advanced(OpenMP_libomp_LIBRARY)
|
||||||
if(OpenMP_libomp_LIBRARY)
|
if(OpenMP_libomp_LIBRARY)
|
||||||
try_compile( OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG}
|
try_compile( OpenMP_COMPILE_RESULT_${FLAG_MODE}_${OPENMP_PLAIN_FLAG}
|
||||||
SOURCES ${_OPENMP_TEST_SRC}
|
SOURCE_FROM_VAR "${_OPENMP_TEST_SRC_NAME}" _OPENMP_TEST_SRC_CONTENT
|
||||||
CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OPENMP_FLAGS_TEST}"
|
CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OPENMP_FLAGS_TEST}"
|
||||||
LINK_LIBRARIES ${CMAKE_${LANG}_VERBOSE_FLAG} ${OpenMP_libomp_LIBRARY}
|
LINK_LIBRARIES ${CMAKE_${LANG}_VERBOSE_FLAG} ${OpenMP_libomp_LIBRARY}
|
||||||
OUTPUT_VARIABLE OpenMP_TRY_COMPILE_OUTPUT
|
OUTPUT_VARIABLE OpenMP_TRY_COMPILE_OUTPUT
|
||||||
@@ -409,7 +407,8 @@ set(OpenMP_Fortran_CHECK_VERSION_SOURCE
|
|||||||
")
|
")
|
||||||
|
|
||||||
function(_OPENMP_GET_SPEC_DATE LANG SPEC_DATE)
|
function(_OPENMP_GET_SPEC_DATE LANG SPEC_DATE)
|
||||||
_OPENMP_WRITE_SOURCE_FILE("${LANG}" "CHECK_VERSION_SOURCE" OpenMPCheckVersion _OPENMP_TEST_SRC)
|
_OPENMP_PREPARE_SOURCE("${LANG}" CHECK_VERSION_SOURCE OpenMPCheckVersion
|
||||||
|
_OPENMP_TEST_SRC_NAME _OPENMP_TEST_SRC_CONTENT)
|
||||||
|
|
||||||
unset(_includeDirFlags)
|
unset(_includeDirFlags)
|
||||||
if(OpenMP_${LANG}_INCLUDE_DIR)
|
if(OpenMP_${LANG}_INCLUDE_DIR)
|
||||||
@@ -419,10 +418,10 @@ function(_OPENMP_GET_SPEC_DATE LANG SPEC_DATE)
|
|||||||
set(BIN_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindOpenMP/ompver_${LANG}.bin")
|
set(BIN_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/FindOpenMP/ompver_${LANG}.bin")
|
||||||
string(REGEX REPLACE "[-/=+]" "" OPENMP_PLAIN_FLAG "${OPENMP_FLAG}")
|
string(REGEX REPLACE "[-/=+]" "" OPENMP_PLAIN_FLAG "${OPENMP_FLAG}")
|
||||||
try_compile(OpenMP_SPECTEST_${LANG}_${OPENMP_PLAIN_FLAG}
|
try_compile(OpenMP_SPECTEST_${LANG}_${OPENMP_PLAIN_FLAG}
|
||||||
SOURCES "${_OPENMP_TEST_SRC}"
|
SOURCE_FROM_VAR "${_OPENMP_TEST_SRC_NAME}" _OPENMP_TEST_SRC_CONTENT
|
||||||
CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OpenMP_${LANG}_FLAGS}" ${_includeDirFlags}
|
CMAKE_FLAGS "-DCOMPILE_DEFINITIONS:STRING=${OpenMP_${LANG}_FLAGS}" ${_includeDirFlags}
|
||||||
COPY_FILE ${BIN_FILE}
|
COPY_FILE "${BIN_FILE}"
|
||||||
OUTPUT_VARIABLE OpenMP_TRY_COMPILE_OUTPUT)
|
OUTPUT_VARIABLE OpenMP_TRY_COMPILE_OUTPUT)
|
||||||
|
|
||||||
if(${OpenMP_SPECTEST_${LANG}_${OPENMP_PLAIN_FLAG}})
|
if(${OpenMP_SPECTEST_${LANG}_${OPENMP_PLAIN_FLAG}})
|
||||||
file(STRINGS ${BIN_FILE} specstr LIMIT_COUNT 1 REGEX "INFO:OpenMP-date")
|
file(STRINGS ${BIN_FILE} specstr LIMIT_COUNT 1 REGEX "INFO:OpenMP-date")
|
||||||
|
@@ -77,19 +77,16 @@ macro(__TEST_BIG_ENDIAN_LEGACY_IMPL VARIABLE)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(_test_language STREQUAL "CXX")
|
if(_test_language STREQUAL "CXX")
|
||||||
set(_test_file "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/TestEndianess.cpp")
|
set(_test_file TestEndianess.cpp)
|
||||||
else()
|
else()
|
||||||
set(_test_file "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/TestEndianess.c")
|
set(_test_file TestEndianess.c)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
configure_file("${CMAKE_ROOT}/Modules/TestEndianess.c.in"
|
file(READ "${CMAKE_ROOT}/Modules/TestEndianess.c.in" TEST_ENDIANESS_FILE_CONTENT)
|
||||||
${_test_file}
|
string(CONFIGURE "${TEST_ENDIANESS_FILE_CONTENT}" TEST_ENDIANESS_FILE_CONTENT @ONLY)
|
||||||
@ONLY)
|
|
||||||
|
|
||||||
file(READ ${_test_file} TEST_ENDIANESS_FILE_CONTENT)
|
|
||||||
|
|
||||||
try_compile(HAVE_${VARIABLE}
|
try_compile(HAVE_${VARIABLE}
|
||||||
SOURCES ${_test_file}
|
SOURCE_FROM_VAR "${_test_file}" TEST_ENDIANESS_FILE_CONTENT
|
||||||
OUTPUT_VARIABLE OUTPUT
|
OUTPUT_VARIABLE OUTPUT
|
||||||
COPY_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TestEndianess.bin" )
|
COPY_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TestEndianess.bin" )
|
||||||
|
|
||||||
@@ -130,12 +127,12 @@ macro(__TEST_BIG_ENDIAN_LEGACY_IMPL VARIABLE)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
||||||
"Determining if the system is big endian passed with the following output:\n${OUTPUT}\nTestEndianess.c:\n${TEST_ENDIANESS_FILE_CONTENT}\n\n")
|
"Determining if the system is big endian passed with the following output:\n${OUTPUT}\n${_test_file}:\n${TEST_ENDIANESS_FILE_CONTENT}\n\n")
|
||||||
|
|
||||||
else()
|
else()
|
||||||
message(CHECK_FAIL "failed")
|
message(CHECK_FAIL "failed")
|
||||||
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
||||||
"Determining if the system is big endian failed with the following output:\n${OUTPUT}\nTestEndianess.c:\n${TEST_ENDIANESS_FILE_CONTENT}\n\n")
|
"Determining if the system is big endian failed with the following output:\n${OUTPUT}\n${_test_file}:\n${TEST_ENDIANESS_FILE_CONTENT}\n\n")
|
||||||
set(${VARIABLE})
|
set(${VARIABLE})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
Reference in New Issue
Block a user