mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-16 05:26:58 +08:00
HIP: Add HIP to all the Check* modules
This commit is contained in:

committed by
Zack Galbreath

parent
947dbed0aa
commit
2e86e50c2f
@@ -65,6 +65,8 @@ function(CHECK_LINKER_FLAG _lang _flag _var)
|
|||||||
set (_source " program test\n stop\n end program")
|
set (_source " program test\n stop\n end program")
|
||||||
elseif (_lang MATCHES "CUDA")
|
elseif (_lang MATCHES "CUDA")
|
||||||
set (_source "__host__ int main() { return 0; }")
|
set (_source "__host__ int main() { return 0; }")
|
||||||
|
elseif (_lang MATCHES "HIP")
|
||||||
|
set (_source "__host__ int main() { return 0; }")
|
||||||
elseif (_lang MATCHES "^(OBJC|OBJCXX)$")
|
elseif (_lang MATCHES "^(OBJC|OBJCXX)$")
|
||||||
set (_source "#ifndef __OBJC__\n# error \"Not an Objective-C++ compiler\"\n#endif\nint main(void) { return 0; }")
|
set (_source "#ifndef __OBJC__\n# error \"Not an Objective-C++ compiler\"\n#endif\nint main(void) { return 0; }")
|
||||||
else()
|
else()
|
||||||
|
@@ -24,6 +24,9 @@ function(CMAKE_CHECK_COMPILER_FLAG _lang _flag _var)
|
|||||||
elseif(_lang STREQUAL "Fortran")
|
elseif(_lang STREQUAL "Fortran")
|
||||||
set(_lang_src " program test\n stop\n end program")
|
set(_lang_src " program test\n stop\n end program")
|
||||||
set(_lang_fail_regex FAIL_REGEX "command[ -]line option .* is valid for .* but not for Fortran")
|
set(_lang_fail_regex FAIL_REGEX "command[ -]line option .* is valid for .* but not for Fortran")
|
||||||
|
elseif(_lang STREQUAL "HIP")
|
||||||
|
set(_lang_src "__host__ int main() { return 0; }")
|
||||||
|
set(_lang_fail_regex FAIL_REGEX "argument unused during compilation: .*") # Clang
|
||||||
elseif(_lang STREQUAL "OBJC")
|
elseif(_lang STREQUAL "OBJC")
|
||||||
set(_lang_src [=[
|
set(_lang_src [=[
|
||||||
#ifndef __OBJC__
|
#ifndef __OBJC__
|
||||||
|
@@ -22,6 +22,9 @@ function(CMAKE_CHECK_SOURCE_COMPILES _lang _source _var)
|
|||||||
elseif(_lang STREQUAL "Fortran")
|
elseif(_lang STREQUAL "Fortran")
|
||||||
set(_lang_textual "Fortran")
|
set(_lang_textual "Fortran")
|
||||||
set(_lang_ext "F90")
|
set(_lang_ext "F90")
|
||||||
|
elseif(_lang STREQUAL "HIP")
|
||||||
|
set(_lang_textual "HIP")
|
||||||
|
set(_lang_ext "hip")
|
||||||
elseif(_lang STREQUAL "ISPC")
|
elseif(_lang STREQUAL "ISPC")
|
||||||
set(_lang_textual "ISPC")
|
set(_lang_textual "ISPC")
|
||||||
set(_lang_ext "ispc")
|
set(_lang_ext "ispc")
|
||||||
|
@@ -22,6 +22,9 @@ function(CMAKE_CHECK_SOURCE_RUNS _lang _source _var)
|
|||||||
elseif(_lang STREQUAL "Fortran")
|
elseif(_lang STREQUAL "Fortran")
|
||||||
set(_lang_textual "Fortran")
|
set(_lang_textual "Fortran")
|
||||||
set(_lang_ext "F90")
|
set(_lang_ext "F90")
|
||||||
|
elseif(_lang STREQUAL "HIP")
|
||||||
|
set(_lang_textual "HIP")
|
||||||
|
set(_lang_ext "hip")
|
||||||
elseif(_lang STREQUAL "OBJC")
|
elseif(_lang STREQUAL "OBJC")
|
||||||
set(_lang_textual "Objective-C")
|
set(_lang_textual "Objective-C")
|
||||||
set(_lang_ext "m")
|
set(_lang_ext "m")
|
||||||
|
@@ -452,6 +452,7 @@ function(add_RunCMake_test_try_compile)
|
|||||||
CMAKE_CXX_STANDARD_DEFAULT
|
CMAKE_CXX_STANDARD_DEFAULT
|
||||||
CMake_TEST_CUDA
|
CMake_TEST_CUDA
|
||||||
CMake_TEST_ISPC
|
CMake_TEST_ISPC
|
||||||
|
CMake_TEST_HIP
|
||||||
CMake_TEST_FILESYSTEM_1S
|
CMake_TEST_FILESYSTEM_1S
|
||||||
CMAKE_OBJC_STANDARD_DEFAULT
|
CMAKE_OBJC_STANDARD_DEFAULT
|
||||||
CMAKE_OBJCXX_STANDARD_DEFAULT
|
CMAKE_OBJCXX_STANDARD_DEFAULT
|
||||||
@@ -600,12 +601,15 @@ add_RunCMake_test(target_include_directories)
|
|||||||
add_RunCMake_test(target_sources)
|
add_RunCMake_test(target_sources)
|
||||||
add_RunCMake_test(CheckCompilerFlag -DCMake_TEST_CUDA=${CMake_TEST_CUDA}
|
add_RunCMake_test(CheckCompilerFlag -DCMake_TEST_CUDA=${CMake_TEST_CUDA}
|
||||||
-DCMake_TEST_ISPC=${CMake_TEST_ISPC}
|
-DCMake_TEST_ISPC=${CMake_TEST_ISPC}
|
||||||
-DCMAKE_Fortran_COMPILER_ID=${CMAKE_Fortran_COMPILER_ID})
|
-DCMAKE_Fortran_COMPILER_ID=${CMAKE_Fortran_COMPILER_ID}
|
||||||
|
-DCMake_TEST_HIP=${CMake_TEST_HIP})
|
||||||
add_RunCMake_test(CheckSourceCompiles -DCMake_TEST_CUDA=${CMake_TEST_CUDA}
|
add_RunCMake_test(CheckSourceCompiles -DCMake_TEST_CUDA=${CMake_TEST_CUDA}
|
||||||
-DCMake_TEST_ISPC=${CMake_TEST_ISPC}
|
-DCMake_TEST_ISPC=${CMake_TEST_ISPC}
|
||||||
-DCMAKE_Fortran_COMPILER_ID=${CMAKE_Fortran_COMPILER_ID})
|
-DCMAKE_Fortran_COMPILER_ID=${CMAKE_Fortran_COMPILER_ID}
|
||||||
|
-DCMake_TEST_HIP=${CMake_TEST_HIP})
|
||||||
add_RunCMake_test(CheckSourceRuns -DCMake_TEST_CUDA=${CMake_TEST_CUDA}
|
add_RunCMake_test(CheckSourceRuns -DCMake_TEST_CUDA=${CMake_TEST_CUDA}
|
||||||
-DCMAKE_Fortran_COMPILER_ID=${CMAKE_Fortran_COMPILER_ID})
|
-DCMAKE_Fortran_COMPILER_ID=${CMAKE_Fortran_COMPILER_ID}
|
||||||
|
-DCMake_TEST_HIP=${CMake_TEST_HIP})
|
||||||
set_property(TEST RunCMake.CheckCompilerFlag
|
set_property(TEST RunCMake.CheckCompilerFlag
|
||||||
RunCMake.CheckSourceCompiles
|
RunCMake.CheckSourceCompiles
|
||||||
RunCMake.CheckSourceRuns
|
RunCMake.CheckSourceRuns
|
||||||
@@ -613,14 +617,20 @@ set_property(TEST RunCMake.CheckCompilerFlag
|
|||||||
set_property(TEST RunCMake.CheckSourceCompiles
|
set_property(TEST RunCMake.CheckSourceCompiles
|
||||||
RunCMake.CheckCompilerFlag
|
RunCMake.CheckCompilerFlag
|
||||||
APPEND PROPERTY LABELS "ISPC")
|
APPEND PROPERTY LABELS "ISPC")
|
||||||
|
set_property(TEST RunCMake.CheckCompilerFlag
|
||||||
|
RunCMake.CheckSourceCompiles
|
||||||
|
RunCMake.CheckSourceRuns
|
||||||
|
APPEND PROPERTY LABELS "HIP")
|
||||||
add_RunCMake_test(CheckModules)
|
add_RunCMake_test(CheckModules)
|
||||||
add_RunCMake_test(CheckIPOSupported)
|
add_RunCMake_test(CheckIPOSupported)
|
||||||
if (CMAKE_SYSTEM_NAME MATCHES "(Linux|Darwin)"
|
if (CMAKE_SYSTEM_NAME MATCHES "(Linux|Darwin)"
|
||||||
AND (CMAKE_C_COMPILER_ID MATCHES "Clang|GNU" OR CMAKE_Fortran_COMPILER_ID MATCHES "GNU"))
|
AND (CMAKE_C_COMPILER_ID MATCHES "Clang|GNU" OR CMAKE_Fortran_COMPILER_ID MATCHES "GNU"))
|
||||||
add_RunCMake_test(CheckLinkerFlag -DCMAKE_C_COMPILER_ID=${CMAKE_C_COMPILER_ID}
|
add_RunCMake_test(CheckLinkerFlag -DCMAKE_C_COMPILER_ID=${CMAKE_C_COMPILER_ID}
|
||||||
-DCMAKE_Fortran_COMPILER_ID=${CMAKE_Fortran_COMPILER_ID}
|
-DCMAKE_Fortran_COMPILER_ID=${CMAKE_Fortran_COMPILER_ID}
|
||||||
-DCMake_TEST_CUDA=${CMake_TEST_CUDA})
|
-DCMake_TEST_CUDA=${CMake_TEST_CUDA}
|
||||||
|
-DCMake_TEST_HIP=${CMake_TEST_HIP})
|
||||||
set_property(TEST RunCMake.CheckLinkerFlag APPEND PROPERTY LABELS "CUDA")
|
set_property(TEST RunCMake.CheckLinkerFlag APPEND PROPERTY LABELS "CUDA")
|
||||||
|
set_property(TEST RunCMake.CheckLinkerFlag APPEND PROPERTY LABELS "HIP")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
13
Tests/RunCMake/CheckCompilerFlag/CheckHIPCompilerFlag.cmake
Normal file
13
Tests/RunCMake/CheckCompilerFlag/CheckHIPCompilerFlag.cmake
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
enable_language (HIP)
|
||||||
|
include(CheckCompilerFlag)
|
||||||
|
|
||||||
|
check_compiler_flag(HIP "-_this_is_not_a_flag_" SHOULD_FAIL)
|
||||||
|
if(SHOULD_FAIL)
|
||||||
|
message(SEND_ERROR "invalid HIP compile flag didn't fail.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
check_compiler_flag(HIP "-DFOO" SHOULD_WORK)
|
||||||
|
if(NOT SHOULD_WORK)
|
||||||
|
message(SEND_ERROR "${CMAKE_HIP_COMPILER_ID} compiler flag '-DFOO' check failed")
|
||||||
|
endif()
|
@@ -22,3 +22,7 @@ endif()
|
|||||||
if(CMake_TEST_ISPC)
|
if(CMake_TEST_ISPC)
|
||||||
run_cmake(CheckISPCCompilerFlag)
|
run_cmake(CheckISPCCompilerFlag)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(CMake_TEST_HIP)
|
||||||
|
run_cmake(CheckHIPCompilerFlag)
|
||||||
|
endif()
|
||||||
|
3
Tests/RunCMake/CheckLinkerFlag/CheckHIPLinkerFlag.cmake
Normal file
3
Tests/RunCMake/CheckLinkerFlag/CheckHIPLinkerFlag.cmake
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
set (CHECK_LANGUAGE HIP)
|
||||||
|
include ("${CMAKE_CURRENT_SOURCE_DIR}/CheckLinkerFlag.cmake")
|
@@ -16,3 +16,7 @@ endif()
|
|||||||
if (CMake_TEST_CUDA)
|
if (CMake_TEST_CUDA)
|
||||||
run_cmake(CheckCUDALinkerFlag)
|
run_cmake(CheckCUDALinkerFlag)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (CMake_TEST_HIP)
|
||||||
|
run_cmake(CheckHIPLinkerFlag)
|
||||||
|
endif()
|
||||||
|
@@ -0,0 +1,27 @@
|
|||||||
|
|
||||||
|
enable_language (HIP)
|
||||||
|
include(CheckSourceCompiles)
|
||||||
|
|
||||||
|
check_source_compiles(HIP "I don't build" SHOULD_FAIL)
|
||||||
|
if(SHOULD_FAIL)
|
||||||
|
message(SEND_ERROR "invalid HIP source didn't fail.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
check_source_compiles(HIP [=[
|
||||||
|
#include <vector>
|
||||||
|
__device__ int d_func() { }
|
||||||
|
int main() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
]=]
|
||||||
|
SHOULD_BUILD)
|
||||||
|
if(NOT SHOULD_BUILD)
|
||||||
|
message(SEND_ERROR "Test fail for valid HIP source.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
check_source_compiles(HIP "void l(char const (&x)[2]){}; int main() { l(\"\\n\"); return 0;}"
|
||||||
|
SHOULD_BUILD_COMPLEX)
|
||||||
|
|
||||||
|
if(NOT SHOULD_BUILD_COMPLEX)
|
||||||
|
message(SEND_ERROR "Test fail for valid HIP complex source.")
|
||||||
|
endif()
|
@@ -23,3 +23,7 @@ endif()
|
|||||||
if(CMake_TEST_ISPC)
|
if(CMake_TEST_ISPC)
|
||||||
run_cmake(CheckISPCSourceCompiles)
|
run_cmake(CheckISPCSourceCompiles)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(CMake_TEST_HIP)
|
||||||
|
run_cmake(CheckHIPSourceCompiles)
|
||||||
|
endif()
|
||||||
|
21
Tests/RunCMake/CheckSourceRuns/CheckHIPSourceRuns.cmake
Normal file
21
Tests/RunCMake/CheckSourceRuns/CheckHIPSourceRuns.cmake
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
enable_language (HIP)
|
||||||
|
include(CheckSourceRuns)
|
||||||
|
|
||||||
|
check_source_runs(HIP "int main() {return 2;}" SHOULD_FAIL)
|
||||||
|
if(SHOULD_FAIL)
|
||||||
|
message(SEND_ERROR "HIP check_source_runs succeeded, but should have failed.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
check_source_runs(HIP
|
||||||
|
[=[
|
||||||
|
#include <vector>
|
||||||
|
__device__ __host__ void fake_function();
|
||||||
|
__host__ int main() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
]=]
|
||||||
|
SHOULD_RUN)
|
||||||
|
if(NOT SHOULD_RUN)
|
||||||
|
message(SEND_ERROR "HIP check_source_runs failed for valid HIP executable.")
|
||||||
|
endif()
|
@@ -19,3 +19,7 @@ endif()
|
|||||||
if (CMake_TEST_CUDA)
|
if (CMake_TEST_CUDA)
|
||||||
run_cmake(CheckCUDASourceRuns)
|
run_cmake(CheckCUDASourceRuns)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (CMake_TEST_HIP)
|
||||||
|
run_cmake(CheckHIPSourceRuns)
|
||||||
|
endif()
|
||||||
|
Reference in New Issue
Block a user