51 lines
2.1 KiB
CMake
51 lines
2.1 KiB
CMake
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)
|