1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- cmake_minimum_required(VERSION 3.4.3)
- if(CMAKE_COMPILER_IS_GNUCXX)
- if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
- message(FATAL_ERROR "host compiler - gcc version must be > 4.8")
- endif()
- elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
- if (${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 3.6)
- message(FATAL_ERROR "host compiler - clang version must be > 3.6")
- endif()
- endif()
- if(MSVC)
- set(ComputeCpp_STL_CHECK_SRC __STL_check)
- file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${ComputeCpp_STL_CHECK_SRC}.cpp
- "#include <ios>\n"
- "int main() { return 0; }\n")
- execute_process(
- COMMAND ${ComputeCpp_DEVICE_COMPILER_EXECUTABLE}
- ${COMPUTECPP_DEVICE_COMPILER_FLAGS}
- -isystem ${ComputeCpp_INCLUDE_DIRS}
- -o ${ComputeCpp_STL_CHECK_SRC}.sycl
- -c ${ComputeCpp_STL_CHECK_SRC}.cpp
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- RESULT_VARIABLE ComputeCpp_STL_CHECK_RESULT
- ERROR_QUIET
- OUTPUT_QUIET)
- if(NOT ${ComputeCpp_STL_CHECK_RESULT} EQUAL 0)
- # Try disabling compiler version checks
- execute_process(
- COMMAND ${ComputeCpp_DEVICE_COMPILER_EXECUTABLE}
- ${COMPUTECPP_DEVICE_COMPILER_FLAGS}
- -D_ALLOW_COMPILER_AND_STL_VERSION_MISMATCH
- -isystem ${ComputeCpp_INCLUDE_DIRS}
- -o ${ComputeCpp_STL_CHECK_SRC}.cpp.sycl
- -c ${ComputeCpp_STL_CHECK_SRC}.cpp
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- RESULT_VARIABLE ComputeCpp_STL_CHECK_RESULT
- ERROR_QUIET
- OUTPUT_QUIET)
- if(NOT ${ComputeCpp_STL_CHECK_RESULT} EQUAL 0)
- message(STATUS "Device compiler cannot consume hosted STL headers. Using any parts of the STL will likely result in device compiler errors.")
- else()
- message(STATUS "Device compiler does not meet certain STL version requirements. Disabling version checks and hoping for the best.")
- list(APPEND COMPUTECPP_DEVICE_COMPILER_FLAGS -D_ALLOW_COMPILER_AND_STL_VERSION_MISMATCH)
- endif()
- endif()
- file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/${ComputeCpp_STL_CHECK_SRC}.cpp
- ${CMAKE_CURRENT_BINARY_DIR}/${ComputeCpp_STL_CHECK_SRC}.cpp.sycl)
- endif(MSVC)
|