Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht@blender.org>2021-10-05 14:08:44 +0300
committerBrecht Van Lommel <brecht@blender.org>2021-10-05 14:47:50 +0300
commit55b8fc718a378423cd4b6d93258779e201877b1d (patch)
treec2dc2e53ad7678bf4719c77c700c6030fc1c1599 /build_files
parent71cf9f4b3f0b750325a0037c4ef5c43fea71248f (diff)
Cycles: improve detection of HIP compiler for buildbot
And fix various broken things in the HIP kernel compilation.
Diffstat (limited to 'build_files')
-rw-r--r--build_files/cmake/Modules/FindHIP.cmake79
1 files changed, 79 insertions, 0 deletions
diff --git a/build_files/cmake/Modules/FindHIP.cmake b/build_files/cmake/Modules/FindHIP.cmake
new file mode 100644
index 00000000000..c68d78e5796
--- /dev/null
+++ b/build_files/cmake/Modules/FindHIP.cmake
@@ -0,0 +1,79 @@
+# - Find HIP compiler
+#
+# This module defines
+# HIP_HIPCC_EXECUTABLE, the full path to the hipcc executable
+# HIP_VERSION, the HIP compiler version
+#
+# HIP_FOUND, if the HIP toolkit is found.
+
+#=============================================================================
+# Copyright 2021 Blender Foundation.
+#
+# Distributed under the OSI-approved BSD 3-Clause License,
+# see accompanying file BSD-3-Clause-license.txt for details.
+#=============================================================================
+
+# If HIP_ROOT_DIR was defined in the environment, use it.
+if(NOT HIP_ROOT_DIR AND NOT $ENV{HIP_ROOT_DIR} STREQUAL "")
+ set(HIP_ROOT_DIR $ENV{HIP_ROOT_DIR})
+endif()
+
+set(_hip_SEARCH_DIRS
+ ${HIP_ROOT_DIR}
+)
+
+find_program(HIP_HIPCC_EXECUTABLE
+ NAMES
+ hipcc
+ HINTS
+ ${_hip_SEARCH_DIRS}
+)
+
+if(HIP_HIPCC_EXECUTABLE AND NOT EXISTS ${HIP_HIPCC_EXECUTABLE})
+ message(WARNING "Cached or directly specified hipcc executable does not exist.")
+ set(HIP_FOUND FALSE)
+elseif(HIP_HIPCC_EXECUTABLE)
+ set(HIP_FOUND TRUE)
+
+ set(HIP_VERSION_MAJOR 0)
+ set(HIP_VERSION_MINOR 0)
+ set(HIP_VERSION_PATCH 0)
+
+ # Get version from the output.
+ execute_process(COMMAND ${HIP_HIPCC_EXECUTABLE} --version
+ OUTPUT_VARIABLE HIP_VERSION_RAW
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+ # Parse parts.
+ if(HIP_VERSION_RAW MATCHES "HIP version: .*")
+ # Strip the HIP prefix and get list of individual version components.
+ string(REGEX REPLACE
+ ".*HIP version: ([.0-9]+).*" "\\1"
+ HIP_SEMANTIC_VERSION "${HIP_VERSION_RAW}")
+ string(REPLACE "." ";" HIP_VERSION_PARTS "${HIP_SEMANTIC_VERSION}")
+ list(LENGTH HIP_VERSION_PARTS NUM_HIP_VERSION_PARTS)
+
+ # Extract components into corresponding variables.
+ if(NUM_HIP_VERSION_PARTS GREATER 0)
+ list(GET HIP_VERSION_PARTS 0 HIP_VERSION_MAJOR)
+ endif()
+ if(NUM_HIP_VERSION_PARTS GREATER 1)
+ list(GET HIP_VERSION_PARTS 1 HIP_VERSION_MINOR)
+ endif()
+ if(NUM_HIP_VERSION_PARTS GREATER 2)
+ list(GET HIP_VERSION_PARTS 2 HIP_VERSION_PATCH)
+ endif()
+
+ # Unset temp variables.
+ unset(NUM_HIP_VERSION_PARTS)
+ unset(HIP_SEMANTIC_VERSION)
+ unset(HIP_VERSION_PARTS)
+ endif()
+
+ # Construct full semantic version.
+ set(HIP_VERSION "${HIP_VERSION_MAJOR}.${HIP_VERSION_MINOR}.${HIP_VERSION_PATCH}")
+ unset(HIP_VERSION_RAW)
+else()
+ set(HIP_FOUND FALSE)
+endif()