From 63793a98a95c1e934c45df64fcf33cba1c82a141 Mon Sep 17 00:00:00 2001 From: Florent Pruvost <florent.pruvost@inria.fr> Date: Sat, 30 Nov 2024 08:34:17 +0100 Subject: [PATCH] pkg-config: remove the cuda.pc and mpi.pc required dependencies, these files are not common and not installed usually ChameleonPkgConfig.cmake: find the precise mpi .pc file to add in chameleon.pc required packages --- .gitlab/build.sh | 27 +++++++++++++------------- cmake_modules/ChameleonPkgConfig.cmake | 26 ++++++++++++++++++++++--- 2 files changed, 37 insertions(+), 16 deletions(-) diff --git a/.gitlab/build.sh b/.gitlab/build.sh index d1d1c3f0f..bdfe6baec 100755 --- a/.gitlab/build.sh +++ b/.gitlab/build.sh @@ -6,6 +6,11 @@ SCAN="" # Configure with CMake case $SYSTEM in + guix) + echo "build on guix" + cmake -B build-${VERSION} -S . -C cmake_modules/gitlab-ci-initial-cache.cmake $BUILD_OPTIONS + ;; + linux) echo "build on linux" source .gitlab-ci-env.sh $CHAM_CI_ENV_ARG @@ -15,11 +20,6 @@ case $SYSTEM in eval '${SCAN}cmake -B build-${VERSION} -S . -C cmake_modules/gitlab-ci-initial-cache.cmake $BUILD_OPTIONS' ;; - guix) - echo "build on guix" - cmake -B build-${VERSION} -S . -C cmake_modules/gitlab-ci-initial-cache.cmake $BUILD_OPTIONS - ;; - macosx) echo "build on macosx" # check starpu is already installed and install it if necessary @@ -53,7 +53,7 @@ case $SYSTEM in -DCHAMELEON_USE_MPI=OFF ;; *) - echo "The SYSTEM environment variable is $SYSTEM. It is not one of : linux, guix, macosx, windows -> exit 1." + echo "The SYSTEM environment variable is $SYSTEM. It is not one of : guix, linux, macosx, windows -> exit 1." exit 1 ;; esac @@ -79,7 +79,10 @@ fi export FC=gfortran # Set the path variables -if [[ "$SYSTEM" == "linux" ]]; then +if [[ "$SYSTEM" == "guix" ]]; then + export LIBRARY_PATH=$PWD/../../install-${VERSION}/lib:$LIBRARY_PATH + export LD_LIBRARY_PATH=$PWD/../../install-${VERSION}/lib:$LD_LIBRARY_PATH +elif [[ "$SYSTEM" == "linux" ]]; then export LIBRARY_PATH=$PWD/../../install-${VERSION}/lib:$LIBRARY_PATH:/usr/local/lib export LD_LIBRARY_PATH=$PWD/../../install-${VERSION}/lib:$LD_LIBRARY_PATH:/usr/local/lib elif [[ "$SYSTEM" == "macosx" ]]; then @@ -90,12 +93,10 @@ elif [[ "$SYSTEM" == "windows" ]]; then export PATH=$PWD/../../install-${VERSION}/bin:$PATH fi -#if [[ "$SYSTEM" != "guix" ]]; then - # 1) using cmake: - ./link_cmake.sh $PWD/../../install-${VERSION} - # 2) using pkg-config: - ./link_pkgconfig.sh $PWD/../../install-${VERSION} -#fi +# 1) using cmake: +./link_cmake.sh $PWD/../../install-${VERSION} +# 2) using pkg-config: +./link_pkgconfig.sh $PWD/../../install-${VERSION} cd ../.. rm -r install-${VERSION} diff --git a/cmake_modules/ChameleonPkgConfig.cmake b/cmake_modules/ChameleonPkgConfig.cmake index 15df82603..0c1f9df0f 100644 --- a/cmake_modules/ChameleonPkgConfig.cmake +++ b/cmake_modules/ChameleonPkgConfig.cmake @@ -8,7 +8,7 @@ ### # # @project Chameleon -# @version 1.2.0 +# @version 1.3.0 # @author Mathieu Faverge # @author Florent Pruvost # @author Abel Calluaud @@ -93,7 +93,6 @@ macro(chameleon_generate_pkgconfig_files) if(CHAMELEON_USE_CUDA) list(APPEND GPUCUBLAS_PKGCONFIG_LIBS_PRIVATE ${CUDA_CUBLAS_LIBRARIES}) - list(APPEND GPUCUBLAS_PKGCONFIG_REQUIRED "cuda") list(APPEND CHAMELEON_PKGCONFIG_REQUIRED "gpucublas") endif() @@ -110,7 +109,28 @@ macro(chameleon_generate_pkgconfig_files) ) if(CHAMELEON_USE_MPI) - list(APPEND CHAMELEON_PKGCONFIG_REQUIRED "mpi") + if(${MPI_C_LIBRARIES} MATCHES "mpich") + set(MPI_NAME "mpich") + elseif(${MPI_C_LIBRARIES} MATCHES "mvapich2") + set(MPI_NAME "mvapich2") + elseif(${MPI_C_LIBRARIES} MATCHES "madmpi" OR ${MPI_C_LIBRARIES} MATCHES "nmad") + set(MPI_NAME "nmad") + elseif(${MPI_C_LIBRARIES} MATCHES "openmpi") + set(MPI_NAME "ompi") + else() + set(MPI_NAME "mpi") + endif() + find_file(MPIPC_PATH "${MPI_NAME}.pc" + HINTS ${CMAKE_C_IMPLICIT_LINK_DIRECTORIES} + ENV PKG_CONFIG_PATH + PATH_SUFFIXES pkgconfig + NO_CACHE) + if(MPIPC_PATH) + list(APPEND CHAMELEON_PKGCONFIG_REQUIRED ${MPI_NAME}) + else() + list(APPEND CHAMELEON_PKGCONFIG_INCS "${MPI_C_INCLUDE_DIRS}") + list(APPEND CHAMELEON_PKGCONFIG_LIBS "${MPI_C_LIBRARIES}") + endif() endif() generate_pkgconfig_files( -- GitLab