From 2d4080139eca51277a8751255fa9169e2337dd31 Mon Sep 17 00:00:00 2001 From: anutosh491 Date: Mon, 7 Jul 2025 13:30:23 +0530 Subject: [PATCH 1/3] Enabling xtensor-blas with xeus-cpp-lite --- CMakeLists.txt | 6 +++++- include/xtensor-blas/xblas_config.hpp | 4 ++++ .../xtensor-blas/xblas_config_cling.hpp.in | 21 ++++++++++++++----- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ab0aea7..4de475c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,6 +32,10 @@ set(XTENSOR_BLAS_INCLUDE_DIR ${INCLUDE_DIR}) set(XTENSOR_BLAS_CLING_LIBRARY_DIR_64 "\"${CMAKE_INSTALL_PREFIX}/lib64\"") set(XTENSOR_BLAS_CLING_LIBRARY_DIR_32 "\"${CMAKE_INSTALL_PREFIX}/lib32\"") set(XTENSOR_BLAS_CLING_LIBRARY_DIR "\"${CMAKE_INSTALL_PREFIX}/lib\"") +if(EMSCRIPTEN) + set(OPENBLAS_CPPINTEROP_LIBRARY_PATH "\"/lib/${CMAKE_SHARED_LIBRARY_PREFIX}openblas${CMAKE_SHARED_LIBRARY_SUFFIX}\"") + message(STATUS "OPENBLAS_CPPINTEROP_LIBRARY_PATH = ${OPENBLAS_CPPINTEROP_LIBRARY_PATH}") +endif() configure_file ( "${INCLUDE_DIR}/xtensor-blas/xblas_config_cling.hpp.in" @@ -99,7 +103,7 @@ OPTION(XTENSOR_USE_FLENS_BLAS "use FLENS generic implementation instead of cblas # If that is not the case, one can pass OpenBLAS_DIR without the boolean # toggle. OPTION(USE_OPENBLAS "use OpenBLAS (requires suitable OpenBLASConfig.cmake)" OFF) -if(OpenBLAS_DIR) +if(OpenBLAS_DIR OR EMSCRIPTEN) set(USE_OPENBLAS ON) endif() diff --git a/include/xtensor-blas/xblas_config.hpp b/include/xtensor-blas/xblas_config.hpp index a7e319b..c343932 100644 --- a/include/xtensor-blas/xblas_config.hpp +++ b/include/xtensor-blas/xblas_config.hpp @@ -30,6 +30,10 @@ #include "xtensor-blas/xblas_config_cling.hpp" #endif +#if defined(__CLANG_REPL__) && defined(__EMSCRIPTEN__) +#include "xtensor-blas/xblas_config_cling.hpp" +#endif + namespace xt { using blas_index_t = BLAS_IDX; diff --git a/include/xtensor-blas/xblas_config_cling.hpp.in b/include/xtensor-blas/xblas_config_cling.hpp.in index 85b496a..ef54058 100644 --- a/include/xtensor-blas/xblas_config_cling.hpp.in +++ b/include/xtensor-blas/xblas_config_cling.hpp.in @@ -10,17 +10,28 @@ #ifndef XBLAS_CONFIG_CLING_HPP #define XBLAS_CONFIG_CLING_HPP -#pragma cling add_library_path(@XTENSOR_BLAS_CLING_LIBRARY_DIR_64@) -#pragma cling add_library_path(@XTENSOR_BLAS_CLING_LIBRARY_DIR_32@) -#pragma cling add_library_path(@XTENSOR_BLAS_CLING_LIBRARY_DIR@) - #ifndef XTENSOR_USE_FLENS_BLAS #define HAVE_CBLAS 1 +#if defined(__CLING__) + +#pragma cling add_library_path(@XTENSOR_BLAS_CLING_LIBRARY_DIR_64@) +#pragma cling add_library_path(@XTENSOR_BLAS_CLING_LIBRARY_DIR_32@) +#pragma cling add_library_path(@XTENSOR_BLAS_CLING_LIBRARY_DIR@) #pragma cling load("libblas") #pragma cling load("liblapack") -#endif +#elif defined(__EMSCRIPTEN__) && defined(__CLANG_REPL__) + +#include +static bool _openblas_loaded = []() { + Cpp::LoadLibrary(@OPENBLAS_CPPINTEROP_LIBRARY_PATH@, false); + return true; +}(); #endif + +#endif // XTENSOR_USE_FLENS_BLAS + +#endif // XBLAS_CONFIG_CLING_HPP \ No newline at end of file From b0bb7f19d46f257de7dd3df364f30e616f930ee4 Mon Sep 17 00:00:00 2001 From: anutosh491 Date: Fri, 11 Jul 2025 09:36:59 +0530 Subject: [PATCH 2/3] drop cmake changes --- CMakeLists.txt | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4de475c..ab0aea7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,10 +32,6 @@ set(XTENSOR_BLAS_INCLUDE_DIR ${INCLUDE_DIR}) set(XTENSOR_BLAS_CLING_LIBRARY_DIR_64 "\"${CMAKE_INSTALL_PREFIX}/lib64\"") set(XTENSOR_BLAS_CLING_LIBRARY_DIR_32 "\"${CMAKE_INSTALL_PREFIX}/lib32\"") set(XTENSOR_BLAS_CLING_LIBRARY_DIR "\"${CMAKE_INSTALL_PREFIX}/lib\"") -if(EMSCRIPTEN) - set(OPENBLAS_CPPINTEROP_LIBRARY_PATH "\"/lib/${CMAKE_SHARED_LIBRARY_PREFIX}openblas${CMAKE_SHARED_LIBRARY_SUFFIX}\"") - message(STATUS "OPENBLAS_CPPINTEROP_LIBRARY_PATH = ${OPENBLAS_CPPINTEROP_LIBRARY_PATH}") -endif() configure_file ( "${INCLUDE_DIR}/xtensor-blas/xblas_config_cling.hpp.in" @@ -103,7 +99,7 @@ OPTION(XTENSOR_USE_FLENS_BLAS "use FLENS generic implementation instead of cblas # If that is not the case, one can pass OpenBLAS_DIR without the boolean # toggle. OPTION(USE_OPENBLAS "use OpenBLAS (requires suitable OpenBLASConfig.cmake)" OFF) -if(OpenBLAS_DIR OR EMSCRIPTEN) +if(OpenBLAS_DIR) set(USE_OPENBLAS ON) endif() From 096ebf68a300faa75916c9cbd6adfd5adcc73c12 Mon Sep 17 00:00:00 2001 From: Johan Mabille Date: Wed, 16 Jul 2025 09:50:30 +0200 Subject: [PATCH 3/3] linter --- include/xtensor-blas/xblas_config_cling.hpp.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/xtensor-blas/xblas_config_cling.hpp.in b/include/xtensor-blas/xblas_config_cling.hpp.in index ef54058..cbe4f13 100644 --- a/include/xtensor-blas/xblas_config_cling.hpp.in +++ b/include/xtensor-blas/xblas_config_cling.hpp.in @@ -34,4 +34,4 @@ static bool _openblas_loaded = []() { #endif // XTENSOR_USE_FLENS_BLAS -#endif // XBLAS_CONFIG_CLING_HPP \ No newline at end of file +#endif // XBLAS_CONFIG_CLING_HPP