2023-08-16 00:20:26 +10:00
|
|
|
# SPDX-FileCopyrightText: 2021 Blender Authors
|
2023-06-14 22:49:59 +10:00
|
|
|
#
|
2022-02-11 14:23:56 +11:00
|
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
|
|
2023-04-24 18:57:15 +02:00
|
|
|
# Find HIP compiler. This module defines
|
2021-10-05 13:08:44 +02:00
|
|
|
# HIP_HIPCC_EXECUTABLE, the full path to the hipcc executable
|
|
|
|
|
# HIP_VERSION, the HIP compiler version
|
|
|
|
|
# HIP_FOUND, if the HIP toolkit is found.
|
|
|
|
|
|
2024-03-01 16:22:06 +11:00
|
|
|
if(NOT (DEFINED HIP_ROOT_DIR))
|
|
|
|
|
set(HIP_ROOT_DIR "")
|
|
|
|
|
endif()
|
|
|
|
|
|
2023-07-29 13:47:55 +10:00
|
|
|
# If `HIP_ROOT_DIR` was defined in the environment, use it.
|
2024-03-01 16:22:06 +11:00
|
|
|
if(HIP_ROOT_DIR)
|
2023-07-29 13:47:55 +10:00
|
|
|
# Pass.
|
|
|
|
|
elseif(DEFINED ENV{HIP_ROOT_DIR})
|
2021-10-05 13:08:44 +02:00
|
|
|
set(HIP_ROOT_DIR $ENV{HIP_ROOT_DIR})
|
2023-09-07 17:22:18 +02:00
|
|
|
elseif(DEFINED ENV{HIP_PATH})
|
|
|
|
|
# Built-in environment variable from SDK.
|
|
|
|
|
set(HIP_ROOT_DIR $ENV{HIP_PATH})
|
2021-10-05 13:08:44 +02:00
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
set(_hip_SEARCH_DIRS
|
|
|
|
|
${HIP_ROOT_DIR}
|
2024-06-19 19:34:39 +02:00
|
|
|
/opt/rocm
|
|
|
|
|
/opt/rocm/hip
|
2025-02-20 17:34:14 +01:00
|
|
|
"C:/Program Files/AMD/ROCm/*"
|
2021-10-05 13:08:44 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
find_program(HIP_HIPCC_EXECUTABLE
|
|
|
|
|
NAMES
|
|
|
|
|
hipcc
|
|
|
|
|
HINTS
|
|
|
|
|
${_hip_SEARCH_DIRS}
|
2021-10-06 16:13:21 +02:00
|
|
|
PATH_SUFFIXES
|
|
|
|
|
bin
|
2021-10-05 13:08:44 +02:00
|
|
|
)
|
|
|
|
|
|
2023-04-24 18:57:15 +02:00
|
|
|
if(HIP_HIPCC_EXECUTABLE)
|
2025-02-20 17:34:14 +01:00
|
|
|
if(NOT HIP_ROOT_DIR)
|
|
|
|
|
get_filename_component(HIP_ROOT_DIR ${HIP_HIPCC_EXECUTABLE} DIRECTORY)
|
|
|
|
|
get_filename_component(HIP_ROOT_DIR ${HIP_ROOT_DIR} DIRECTORY)
|
|
|
|
|
endif()
|
|
|
|
|
|
2021-10-05 13:08:44 +02:00
|
|
|
set(HIP_VERSION_MAJOR 0)
|
|
|
|
|
set(HIP_VERSION_MINOR 0)
|
|
|
|
|
set(HIP_VERSION_PATCH 0)
|
2025-02-20 17:34:14 +01:00
|
|
|
set(_hipcc_executable ${HIP_HIPCC_EXECUTABLE})
|
2021-10-05 13:08:44 +02:00
|
|
|
|
2025-02-20 17:34:14 +01:00
|
|
|
# Get version from the header.
|
|
|
|
|
file(STRINGS "${HIP_ROOT_DIR}/include/hip/hip_version.h" _tmp REGEX "^#define HIP_VERSION_MAJOR.*$")
|
|
|
|
|
string(REGEX MATCHALL "[0-9]+" HIP_VERSION_MAJOR ${_tmp})
|
|
|
|
|
file(STRINGS "${HIP_ROOT_DIR}/include/hip/hip_version.h" _tmp REGEX "^#define HIP_VERSION_MINOR.*$")
|
|
|
|
|
string(REGEX MATCHALL "[0-9]+" HIP_VERSION_MINOR ${_tmp})
|
|
|
|
|
file(STRINGS "${HIP_ROOT_DIR}/include/hip/hip_version.h" _tmp REGEX "^#define HIP_VERSION_PATCH.*$")
|
|
|
|
|
string(REGEX MATCHALL "[0-9]+" HIP_VERSION_PATCH ${_tmp})
|
|
|
|
|
unset(_tmp)
|
2021-10-05 13:08:44 +02:00
|
|
|
|
|
|
|
|
# Construct full semantic version.
|
|
|
|
|
set(HIP_VERSION "${HIP_VERSION_MAJOR}.${HIP_VERSION_MINOR}.${HIP_VERSION_PATCH}")
|
2024-09-24 14:35:24 +02:00
|
|
|
set(HIP_VERSION_SHORT "${HIP_VERSION_MAJOR}.${HIP_VERSION_MINOR}")
|
2023-04-19 18:18:05 +02:00
|
|
|
unset(_hip_version_raw)
|
|
|
|
|
unset(_hipcc_executable)
|
2021-10-05 13:08:44 +02:00
|
|
|
endif()
|
2023-04-19 18:18:05 +02:00
|
|
|
|
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
|
|
|
find_package_handle_standard_args(HIP
|
2025-01-03 13:23:38 +11:00
|
|
|
REQUIRED_VARS HIP_HIPCC_EXECUTABLE
|
|
|
|
|
VERSION_VAR HIP_VERSION)
|
2024-03-08 10:53:03 +11:00
|
|
|
|
2025-01-02 15:03:52 +11:00
|
|
|
mark_as_advanced(
|
|
|
|
|
HIP_HIPCC_EXECUTABLE
|
|
|
|
|
)
|
|
|
|
|
|
2024-03-08 10:53:03 +11:00
|
|
|
unset(_hip_SEARCH_DIRS)
|