From d910dded7d606d4f02fbcc4e4c74fc5b16e8d1d3 Mon Sep 17 00:00:00 2001 From: "Bhardwaj, Gopesh" Date: Wed, 28 May 2025 00:48:57 +0530 Subject: [PATCH] SWDEV-534297 Fixing build dependecies for python versions (#411) * SWDEV-534297 Fixing build dependecies for python versions * Addressing feedback * Fixed bug and tests * More changes after CMake learnings --- source/lib/python/CMakeLists.txt | 4 ++-- source/lib/python/utilities.cmake | 34 ++++++++++++++++++++++++++----- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/source/lib/python/CMakeLists.txt b/source/lib/python/CMakeLists.txt index d569cb3846..0009129ee4 100644 --- a/source/lib/python/CMakeLists.txt +++ b/source/lib/python/CMakeLists.txt @@ -7,9 +7,9 @@ set(DEFAULT_PYTHON_RPATH "\$ORIGIN:\$ORIGIN/../../..:\$ORIGIN/../../../rocprofil include("${CMAKE_CURRENT_LIST_DIR}/utilities.cmake") if(NOT DEFINED ROCPROFILER_PYTHON_VERSIONS) - get_default_python_version(DEFAULT_PYTHON_VERSION) + get_default_python_versions(DEFAULT_PYTHON_VERSIONS) set(ROCPROFILER_PYTHON_VERSIONS - "${DEFAULT_PYTHON_VERSION}" + "${DEFAULT_PYTHON_VERSIONS}" CACHE STRING "") endif() diff --git a/source/lib/python/utilities.cmake b/source/lib/python/utilities.cmake index 6b3b3144ca..a93189fbc9 100644 --- a/source/lib/python/utilities.cmake +++ b/source/lib/python/utilities.cmake @@ -45,13 +45,37 @@ macro(rocprofiler_find_python3 _VERSION) endif() endmacro() -function(get_default_python_version _VAR) - rocprofiler_reset_python3_cache() - find_package(Python3 3.6 ${_ARGN} REQUIRED MODULE COMPONENTS Interpreter Development) +# make sure we have all python version candidates +set(ROCPROFILER_PYTHON_VERSION_CANDIDATES + "3.20;3.19;3.18;3.17;3.16;3.15;3.14;3.13;3.12;3.11;3.10;3.9;3.8;3.7;3.6" + CACHE STRING "Python versions to search for, newest first") - if(Python3_FOUND) +function(get_default_python_versions _VAR) + rocprofiler_reset_python3_cache() + + set(_PYTHON_FOUND_VERSIONS) + + foreach(_VER IN LISTS ROCPROFILER_PYTHON_VERSION_CANDIDATES) + find_package(Python3 ${_VER} EXACT COMPONENTS Interpreter Development) + if(Python3_FOUND) + list(APPEND _PYTHON_FOUND_VERSIONS + "${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}") + endif() + endforeach() + + # If none found, do one last check for 3.6 (no EXACT) + if(NOT _PYTHON_FOUND_VERSIONS) + find_package(Python3 3.6 COMPONENTS Interpreter Development) + if(Python3_FOUND) + list(APPEND _PYTHON_FOUND_VERSIONS + "${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}") + endif() + endif() + + # Set the output variable to the first found version, if any + if(_PYTHON_FOUND_VERSIONS) set(${_VAR} - ${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR} + "${_PYTHON_FOUND_VERSIONS}" PARENT_SCOPE) endif()