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