diff --git a/modules/GenPkgConfig.cmake b/modules/GenPkgConfig.cmake index 78006a16541f3258c9d00b8f3cdaf05e60ef31d9..2b50e1a80947dc27a4762f491b493b0462e656ab 100644 --- a/modules/GenPkgConfig.cmake +++ b/modules/GenPkgConfig.cmake @@ -51,7 +51,7 @@ # The generated files are then installed in the subdirectory # lib/pkgconfig of the prefix directory. # -# generate_env_files( +# generate_env_file( # [PROJECTNAME name] # ) # Where: @@ -61,6 +61,22 @@ # The generated file is installed in the subdirectory bin of the # prefix directory. # +# generate_newenv_file( +# [PACKAGE name] +# [PACKAGE_TEST test] +# ) +# Where: +# - PACKAGE defines the project name of the library if different +# from CMAKE_PROJECT_NAME. +# - PACKAGE_TEST defines a test string to check if the installation +# - is correct within the generated file. +# +# While the first version generates a file named $PACKAGE_env.sh, the +# new one generates a $PACKAGE_env file to avoid conflict +# +# The generated file is installed in the subdirectory bin of the +# prefix directory. +# ### ### @@ -215,7 +231,7 @@ endmacro(generate_pkgconfig_files) ### # -# generate_env_file: generate pkf-config files +# generate_env_file: generate file to setup environment variables # ### macro(generate_env_file) @@ -256,6 +272,62 @@ macro(generate_env_file) endmacro(generate_env_file) +### +# +# generate_env_file2: generate file to setup environment variables (StarPU-like) +# +### +macro(generate_newenv_file) + + set(_options ) + set(_oneValueArgs PACKAGE PACKAGE_TEST) + set(_multiValueArgs ) + set(MN "generate_env_file2") + cmake_parse_arguments(generate_env_file2 + "${_options}" "${_oneValueArgs}" + "${_multiValueArgs}" ${ARGN} ) + + set(MN "generate_pkgconfig_files") + cmake_parse_arguments(${MN} + "${_options}" "${_oneValueArgs}" + "${_multiValueArgs}" ${ARGN} ) + + if ( NOT DEFINED ${MN}_PACKAGE ) + set( PACKAGE ${CMAKE_PROJECT_NAME} ) + else() + set( PACKAGE ${${MN}_PACKAGE} ) + endif() + + if ( NOT DEFINED ${MN}_PACKAGE_TEST ) + set( PACKAGE_TEST "0 = 0" ) + else() + set( PACKAGE_TEST ${${MN}_PACKAGE_TEST} ) + endif() + + string(TOLOWER ${PACKAGE} PACKAGE_LC) + string(TOUPPER ${PACKAGE} PACKAGE_UC) + + # Create .sh file + # --------------- + configure_file( + "${MORSE_CMAKE_MODULE_PATH}/env.in" + "${CMAKE_CURRENT_BINARY_DIR}/bin/${PACKAGE_LC}_env" @ONLY) + + # installation + # ------------ + # Check if the PREFIX is in the PATH or not + # If yes, no need to install this file + string(REPLACE ":" ";" pathlist "$ENV{PATH}") + if ( "${CMAKE_INSTALL_PREFIX}/bin" IN_LIST pathlist ) + message( STATUS "No installation of ${PACKAGE_LC}_env - already in the default environment" ) + else () + message( STATUS "Install ${PACKAGE_LC}_env in ${CMAKE_INSTALL_PREFIX}/bin" ) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/bin/${PACKAGE_LC}_env" + DESTINATION bin) + endif() + +endmacro(generate_newenv_file) + ## ## @end file GenPkgConfig.cmake ## diff --git a/modules/env.in b/modules/env.in new file mode 100644 index 0000000000000000000000000000000000000000..9727ccf9b51f5e381a0594cbe2e53d22fb82d80e --- /dev/null +++ b/modules/env.in @@ -0,0 +1,56 @@ +# +# @file @LONAME@_env.sh +# +# @copyright 2016-2024 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, +# Univ. Bordeaux. All rights reserved. +# +# @version 0.9.0 +# @author Mathieu Faverge +# @date 2024-09-26 +# +# @brief Script to setup environment file inspired from StarPU +# +#!/bin/sh +PROGNAME=@PACKAGE_LC@_env + +usage() +{ + echo "Tool to set @PACKAGE@ environment variables" + echo "" + echo "Usage: source $PROGNAME" + echo "" + echo "" + echo "Options:" + echo " -h, --help display this help and exit" + echo " -v, --version output version information and exit" + echo "" + echo "Report bugs to <@PACKAGE_BUGREPORT@>" +} + +if [ "$1" = "-v" ] || [ "$1" = "--version" ] +then + echo "$PROGNAME (@PACKAGE_NAME@) @PACKAGE_VERSION@" +elif [ "$1" = "-h" ] || [ "$1" = "--help" ] +then + usage +else + prefix=$(realpath @CMAKE_INSTALL_PREFIX@) + @PACKAGE_LC@_bindir=$(realpath @CMAKE_INSTALL_PREFIX@/bin) + @PACKAGE_LC@_libdir=$(realpath @CMAKE_INSTALL_PREFIX@/lib) + @PACKAGE_LC@_datarootdir=$(realpath @CMAKE_INSTALL_PREFIX@/share) + if [ -n "@PACKAGE_TEST@" ] + then + if test @PACKAGE_TEST@ + then + echo "Setting @PACKAGE@ environment for $prefix" + export @PACKAGE_UC@_ROOT=$prefix + export PKG_CONFIG_PATH=$@PACKAGE_LC@_libdir/pkgconfig:$PKG_CONFIG_PATH + export LD_LIBRARY_PATH=$@PACKAGE_LC@_libdir:$LD_LIBRARY_PATH + export PATH=$@PACKAGE_LC@_bindir:$PATH + export MANPATH=$@PACKAGE_LC@_datarootdir/man:$MANPATH + for d in $@PACKAGE_LC@_libdir/python3*/site-packages ; do export PYTHONPATH=$d:$PYTHONPATH ; done + else + echo "[Error] $prefix is not a valid @PACKAGE@ installation directory" + fi + fi +fi