| 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) |