From 109da8c0a035ddcf7b4ea8fb62fb40a685997dc0 Mon Sep 17 00:00:00 2001 From: papertager <2567587994@qq.com> Date: Fri, 5 Jun 2026 11:38:17 +0800 Subject: [PATCH 1/3] Support MACA_HOME in FindMACA --- cmake/utils/FindMACA.cmake | 19 +++++++-- tests/python/cmake/test_find_maca_cmake.py | 46 ++++++++++++++++++++++ 2 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 tests/python/cmake/test_find_maca_cmake.py diff --git a/cmake/utils/FindMACA.cmake b/cmake/utils/FindMACA.cmake index 74b2d1e56fe0..8535249f5076 100644 --- a/cmake/utils/FindMACA.cmake +++ b/cmake/utils/FindMACA.cmake @@ -23,20 +23,31 @@ # # - When USE_MACA=ON, use auto search # - When USE_MACA=/path/to/maca-sdk-path, use the sdk +# - When MACA_PATH or MACA_HOME is set, use the env path # # Provide variables: # # - MACA_FOUND +# - MACA_ROOT_DIR # - MACA_INCLUDE_DIRS # - MACA_MACAMCC_LIBRARY macro(find_maca use_maca) set(__use_maca ${use_maca}) + unset(MACA_FOUND) + unset(MACA_ROOT_DIR) + unset(MACA_INCLUDE_DIRS) + unset(MACA_MACAMCC_LIBRARY) + unset(MACA_HCA_LIBRARY) + unset(MACA_FLASHATTN_LIBRARY) + if(IS_DIRECTORY ${__use_maca}) set(__maca_sdk ${__use_maca}) message(STATUS "Custom MACA SDK PATH=" ${__use_maca}) elseif(IS_DIRECTORY $ENV{MACA_PATH}) set(__maca_sdk $ENV{MACA_PATH}) + elseif(IS_DIRECTORY $ENV{MACA_HOME}) + set(__maca_sdk $ENV{MACA_HOME}) elseif(IS_DIRECTORY /opt/maca) set(__maca_sdk /opt/maca) else() @@ -44,16 +55,18 @@ macro(find_maca use_maca) endif() if(__maca_sdk) + set(MACA_ROOT_DIR ${__maca_sdk}) set(MACA_INCLUDE_DIRS ${__maca_sdk}/include) - find_library(MACA_MACAMCC_LIBRARY mcruntime ${__maca_sdk}/lib) - find_library(MACA_HCA_LIBRARY mxc-runtime64 ${__maca_sdk}/lib) - find_library(MACA_FLASHATTN_LIBRARY mcFlashAttn ${__maca_sdk}/lib) + find_library(MACA_MACAMCC_LIBRARY mcruntime PATHS ${__maca_sdk}/lib NO_DEFAULT_PATH) + find_library(MACA_HCA_LIBRARY mxc-runtime64 PATHS ${__maca_sdk}/lib NO_DEFAULT_PATH) + find_library(MACA_FLASHATTN_LIBRARY mcFlashAttn PATHS ${__maca_sdk}/lib NO_DEFAULT_PATH) if(MACA_MACAMCC_LIBRARY) set(MACA_FOUND TRUE) endif() endif(__maca_sdk) if(MACA_FOUND) + message(STATUS "Found MACA_ROOT_DIR=" ${MACA_ROOT_DIR}) message(STATUS "Found MACA_INCLUDE_DIRS=" ${MACA_INCLUDE_DIRS}) message(STATUS "Found MACA_MACAMCC_LIBRARY=" ${MACA_MACAMCC_LIBRARY}) message(STATUS "Found MACA_FLASHATTN_LIBRARY=" ${MACA_FLASHATTN_LIBRARY}) diff --git a/tests/python/cmake/test_find_maca_cmake.py b/tests/python/cmake/test_find_maca_cmake.py new file mode 100644 index 000000000000..e539996c5330 --- /dev/null +++ b/tests/python/cmake/test_find_maca_cmake.py @@ -0,0 +1,46 @@ +import re +import unittest +from pathlib import Path + + +FIND_MACA = Path(__file__).parents[3] / "cmake" / "utils" / "FindMACA.cmake" + + +class FindMACACMakeTest(unittest.TestCase): + @classmethod + def setUpClass(cls): + cls.content = FIND_MACA.read_text(encoding="utf-8") + + def test_search_order_includes_maca_home_after_maca_path(self): + maca_path_pos = self.content.index("$ENV{MACA_PATH}") + maca_home_pos = self.content.index("$ENV{MACA_HOME}") + default_pos = self.content.index("/opt/maca") + + self.assertLess(maca_path_pos, maca_home_pos) + self.assertLess(maca_home_pos, default_pos) + + def test_public_outputs_are_reset_before_search(self): + for variable in [ + "MACA_FOUND", + "MACA_ROOT_DIR", + "MACA_INCLUDE_DIRS", + "MACA_MACAMCC_LIBRARY", + "MACA_HCA_LIBRARY", + "MACA_FLASHATTN_LIBRARY", + ]: + self.assertRegex(self.content, rf"unset\({re.escape(variable)}\)") + + def test_libraries_are_resolved_inside_selected_sdk(self): + for variable in [ + "MACA_MACAMCC_LIBRARY", + "MACA_HCA_LIBRARY", + "MACA_FLASHATTN_LIBRARY", + ]: + self.assertRegex( + self.content, + rf"find_library\({variable} .* PATHS \${{__maca_sdk}}/lib NO_DEFAULT_PATH\)", + ) + + +if __name__ == "__main__": + unittest.main() From 0ada96be7ccced1ddedb253dc0b60ab11efccd6f Mon Sep 17 00:00:00 2001 From: papertager <2567587994@qq.com> Date: Mon, 22 Jun 2026 13:24:36 +0800 Subject: [PATCH 2/3] fix: quote MACA SDK discovery inputs --- cmake/utils/FindMACA.cmake | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/cmake/utils/FindMACA.cmake b/cmake/utils/FindMACA.cmake index 8535249f5076..81f2c7838b5f 100644 --- a/cmake/utils/FindMACA.cmake +++ b/cmake/utils/FindMACA.cmake @@ -33,21 +33,21 @@ # - MACA_MACAMCC_LIBRARY macro(find_maca use_maca) - set(__use_maca ${use_maca}) + set(__use_maca "${use_maca}") unset(MACA_FOUND) unset(MACA_ROOT_DIR) unset(MACA_INCLUDE_DIRS) - unset(MACA_MACAMCC_LIBRARY) - unset(MACA_HCA_LIBRARY) - unset(MACA_FLASHATTN_LIBRARY) + unset(MACA_MACAMCC_LIBRARY CACHE) + unset(MACA_HCA_LIBRARY CACHE) + unset(MACA_FLASHATTN_LIBRARY CACHE) - if(IS_DIRECTORY ${__use_maca}) - set(__maca_sdk ${__use_maca}) - message(STATUS "Custom MACA SDK PATH=" ${__use_maca}) - elseif(IS_DIRECTORY $ENV{MACA_PATH}) - set(__maca_sdk $ENV{MACA_PATH}) - elseif(IS_DIRECTORY $ENV{MACA_HOME}) - set(__maca_sdk $ENV{MACA_HOME}) + if(IS_DIRECTORY "${__use_maca}") + set(__maca_sdk "${__use_maca}") + message(STATUS "Custom MACA SDK PATH=${__use_maca}") + elseif(IS_DIRECTORY "$ENV{MACA_PATH}") + set(__maca_sdk "$ENV{MACA_PATH}") + elseif(IS_DIRECTORY "$ENV{MACA_HOME}") + set(__maca_sdk "$ENV{MACA_HOME}") elseif(IS_DIRECTORY /opt/maca) set(__maca_sdk /opt/maca) else() From 9d81869a02fa8b15ff9b27d3e7717e60b0b545dd Mon Sep 17 00:00:00 2001 From: papertager <2567587994@qq.com> Date: Mon, 22 Jun 2026 13:48:22 +0800 Subject: [PATCH 3/3] Quote selected MACA SDK paths --- cmake/utils/FindMACA.cmake | 10 +++++----- tests/python/cmake/test_find_maca_cmake.py | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cmake/utils/FindMACA.cmake b/cmake/utils/FindMACA.cmake index 81f2c7838b5f..1207e207eb9b 100644 --- a/cmake/utils/FindMACA.cmake +++ b/cmake/utils/FindMACA.cmake @@ -55,11 +55,11 @@ macro(find_maca use_maca) endif() if(__maca_sdk) - set(MACA_ROOT_DIR ${__maca_sdk}) - set(MACA_INCLUDE_DIRS ${__maca_sdk}/include) - find_library(MACA_MACAMCC_LIBRARY mcruntime PATHS ${__maca_sdk}/lib NO_DEFAULT_PATH) - find_library(MACA_HCA_LIBRARY mxc-runtime64 PATHS ${__maca_sdk}/lib NO_DEFAULT_PATH) - find_library(MACA_FLASHATTN_LIBRARY mcFlashAttn PATHS ${__maca_sdk}/lib NO_DEFAULT_PATH) + set(MACA_ROOT_DIR "${__maca_sdk}") + set(MACA_INCLUDE_DIRS "${__maca_sdk}/include") + find_library(MACA_MACAMCC_LIBRARY mcruntime PATHS "${__maca_sdk}/lib" NO_DEFAULT_PATH) + find_library(MACA_HCA_LIBRARY mxc-runtime64 PATHS "${__maca_sdk}/lib" NO_DEFAULT_PATH) + find_library(MACA_FLASHATTN_LIBRARY mcFlashAttn PATHS "${__maca_sdk}/lib" NO_DEFAULT_PATH) if(MACA_MACAMCC_LIBRARY) set(MACA_FOUND TRUE) diff --git a/tests/python/cmake/test_find_maca_cmake.py b/tests/python/cmake/test_find_maca_cmake.py index e539996c5330..708964f185d2 100644 --- a/tests/python/cmake/test_find_maca_cmake.py +++ b/tests/python/cmake/test_find_maca_cmake.py @@ -28,7 +28,7 @@ def test_public_outputs_are_reset_before_search(self): "MACA_HCA_LIBRARY", "MACA_FLASHATTN_LIBRARY", ]: - self.assertRegex(self.content, rf"unset\({re.escape(variable)}\)") + self.assertRegex(self.content, rf"unset\({re.escape(variable)}(?:\s+CACHE)?\)") def test_libraries_are_resolved_inside_selected_sdk(self): for variable in [ @@ -38,7 +38,7 @@ def test_libraries_are_resolved_inside_selected_sdk(self): ]: self.assertRegex( self.content, - rf"find_library\({variable} .* PATHS \${{__maca_sdk}}/lib NO_DEFAULT_PATH\)", + rf"find_library\({variable} .* PATHS \"?\${{__maca_sdk}}/lib\"? NO_DEFAULT_PATH\)", )