diff --git a/.cmake-format.yaml b/.cmake-format.yaml index 6c371fa654..a4fd524309 100644 --- a/.cmake-format.yaml +++ b/.cmake-format.yaml @@ -245,6 +245,14 @@ parse: COPY: '*' CONFIG: '*' OUTPUT_DIRECTORY: '*' + rocprofiler_install_env_setup_files: + kwargs: + NAME: '*' + VERSION: '*' + SOURCE_DIR: '*' + BINARY_DIR: '*' + INSTALL_DIR: '*' + COMPONENT: '*' override_spec: {} vartags: [] proptags: [] diff --git a/cmake/Templates/modulefile.in b/cmake/Templates/modulefile.in index b855165913..dd47f7d6f4 100644 --- a/cmake/Templates/modulefile.in +++ b/cmake/Templates/modulefile.in @@ -8,9 +8,9 @@ puts stderr "Loads @PACKAGE_NAME@ v@PROJECT_VERSION@" set ROOT [file normalize [file dirname [file normalize ${ModulesCurrentModulefile}]]/../../..] -setenv @PROJECT_NAME@_ROOT "${ROOT}" +setenv @PACKAGE_NAME_UNDERSCORED@_ROOT "${ROOT}" prepend-path CMAKE_PREFIX_PATH "${ROOT}" prepend-path PATH "${ROOT}/bin" prepend-path LD_LIBRARY_PATH "${ROOT}/@CMAKE_INSTALL_LIBDIR@" prepend-path PYTHONPATH "${ROOT}/@CMAKE_INSTALL_PYTHONDIR@" -setenv @PROJECT_NAME@_DIR "${ROOT}/@CMAKE_INSTALL_DATAROOTDIR@/cmake/@PACKAGE_NAME@" +setenv @PACKAGE_NAME_UNDERSCORED@_DIR "${ROOT}/@CMAKE_INSTALL_LIBDIR@/cmake/@PACKAGE_NAME@" diff --git a/cmake/Templates/setup-env.sh.in b/cmake/Templates/setup-env.sh.in index beb8c126f2..1fb07a33fa 100644 --- a/cmake/Templates/setup-env.sh.in +++ b/cmake/Templates/setup-env.sh.in @@ -8,16 +8,16 @@ if [ ! -d "${BASEDIR}" ]; then return 1 fi -@PROJECT_NAME@_ROOT=${BASEDIR} +@PACKAGE_NAME_UNDERSCORED@_ROOT=${BASEDIR} PATH=${BASEDIR}/bin:${PATH} LD_LIBRARY_PATH=${BASEDIR}/@CMAKE_INSTALL_LIBDIR@:${LD_LIBRARY_PATH} PYTHONPATH=${BASEDIR}/@CMAKE_INSTALL_PYTHONDIR@:${PYTHONPATH} CMAKE_PREFIX_PATH=${BASEDIR}:${CMAKE_PREFIX_PATH} -@PROJECT_NAME@_DIR=${BASEDIR}/@CMAKE_INSTALL_DATAROOTDIR@/cmake/@PACKAGE_NAME@ +@PACKAGE_NAME_UNDERSCORED@_DIR=${BASEDIR}/@CMAKE_INSTALL_LIBDIR@/cmake/@PACKAGE_NAME@ -export @PROJECT_NAME@_ROOT +export @PACKAGE_NAME_UNDERSCORED@_ROOT export PATH export LD_LIBRARY_PATH export PYTHONPATH export CMAKE_PREFIX_PATH -export @PROJECT_NAME@_DIR +export @PACKAGE_NAME_UNDERSCORED@_DIR diff --git a/cmake/rocprofiler_config_install.cmake b/cmake/rocprofiler_config_install.cmake index 295a3f5a9a..5ad465640c 100644 --- a/cmake/rocprofiler_config_install.cmake +++ b/cmake/rocprofiler_config_install.cmake @@ -24,7 +24,13 @@ install( EXPORT ${PACKAGE_NAME}-targets FILE ${PACKAGE_NAME}-targets.cmake NAMESPACE ${PROJECT_NAME}:: - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME} + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME} + COMPONENT development) + +rocprofiler_install_env_setup_files( + NAME ${PACKAGE_NAME} + VERSION ${PROJECT_VERSION} + INSTALL_DIR ${CMAKE_INSTALL_DATAROOTDIR} COMPONENT development) # ------------------------------------------------------------------------------# @@ -39,27 +45,27 @@ set(PROJECT_EXTRA_DIRS "${CMAKE_INSTALL_INCLUDEDIR}/${PACKAGE_NAME}" configure_package_config_file( ${PROJECT_SOURCE_DIR}/cmake/Templates/${PACKAGE_NAME}/config.cmake.in - ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-config.cmake - INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME} + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-config.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME} INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} PATH_VARS PROJECT_INSTALL_DIR INCLUDE_INSTALL_DIR LIB_INSTALL_DIR) write_basic_package_version_file( - ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-config-version.cmake + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-config-version.cmake VERSION ${PROJECT_VERSION} COMPATIBILITY SameMinorVersion) configure_file( ${PROJECT_SOURCE_DIR}/cmake/rocprofiler_config_nolink_target.cmake - ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PROJECT_NAME}-sdk/${PROJECT_NAME}-sdk-config-nolink-target.cmake + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}-sdk/${PROJECT_NAME}-sdk-config-nolink-target.cmake COPYONLY) install( FILES - ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-config.cmake - ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-config-version.cmake - ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-config-nolink-target.cmake - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME} + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-config.cmake + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-config-version.cmake + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-config-nolink-target.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME} COMPONENT development) export(PACKAGE ${PROJECT_NAME}) @@ -75,14 +81,14 @@ set(PROJECT_BUILD_TREE_TARGETS headers shared-library build-flags stack-protecto configure_file( ${PROJECT_SOURCE_DIR}/cmake/Templates/${PACKAGE_NAME}/build-config.cmake.in - ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-build-config.cmake + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-build-config.cmake @ONLY) file(RELATIVE_PATH rocp_bin2src_rel_path ${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR}) string(REPLACE "//" "/" rocp_inc_rel_path "${rocp_bin2src_rel_path}/source/include") set(_BUILDTREE_EXPORT_DIR - "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME}") + "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME}") execute_process( COMMAND ${CMAKE_COMMAND} -E create_symlink ${rocp_inc_rel_path} diff --git a/cmake/rocprofiler_config_install_roctx.cmake b/cmake/rocprofiler_config_install_roctx.cmake index a338cbf580..6cf6f5fc22 100644 --- a/cmake/rocprofiler_config_install_roctx.cmake +++ b/cmake/rocprofiler_config_install_roctx.cmake @@ -10,7 +10,13 @@ install( EXPORT ${PACKAGE_NAME}-targets FILE ${PACKAGE_NAME}-targets.cmake NAMESPACE ${PACKAGE_NAME}:: - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME} + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME} + COMPONENT roctx) + +rocprofiler_install_env_setup_files( + NAME ${PACKAGE_NAME} + VERSION ${PROJECT_VERSION} + INSTALL_DIR ${CMAKE_INSTALL_DATAROOTDIR} COMPONENT roctx) # ------------------------------------------------------------------------------# @@ -24,21 +30,21 @@ set(PROJECT_EXTRA_DIRS "${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}-sdk-roctx") configure_package_config_file( ${PROJECT_SOURCE_DIR}/cmake/Templates/${PACKAGE_NAME}/config.cmake.in - ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-config.cmake - INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME} + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-config.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME} INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} PATH_VARS PROJECT_INSTALL_DIR INCLUDE_INSTALL_DIR LIB_INSTALL_DIR) write_basic_package_version_file( - ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-config-version.cmake + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-config-version.cmake VERSION ${PROJECT_VERSION} COMPATIBILITY SameMinorVersion) install( FILES - ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-config.cmake - ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-config-version.cmake - DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME} + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-config.cmake + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-config-version.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME} COMPONENT roctx) export(PACKAGE ${PACKAGE_NAME}) @@ -57,14 +63,14 @@ set(PROJECT_BUILD_TREE_TARGETS configure_file( ${PROJECT_SOURCE_DIR}/cmake/Templates/${PACKAGE_NAME}/build-config.cmake.in - ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-build-config.cmake + ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME}/${PACKAGE_NAME}-build-config.cmake @ONLY) file(RELATIVE_PATH rocp_bin2src_rel_path ${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR}) string(REPLACE "//" "/" rocp_inc_rel_path "${rocp_bin2src_rel_path}/source/include") set(_BUILDTREE_EXPORT_DIR - "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PACKAGE_NAME}") + "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME}") execute_process( COMMAND ${CMAKE_COMMAND} -E create_symlink ${rocp_inc_rel_path} diff --git a/cmake/rocprofiler_utilities.cmake b/cmake/rocprofiler_utilities.cmake index 6c24b52b5d..ffd9a66a94 100644 --- a/cmake/rocprofiler_utilities.cmake +++ b/cmake/rocprofiler_utilities.cmake @@ -998,4 +998,51 @@ function(rocprofiler_parse_hsa_api_table_versions _TARGET) endif() endfunction() +# ---------------------------------------------------------------------------- +# Configures and installs the setup-env.sh and modulefile +# +function(rocprofiler_install_env_setup_files) + # parse args + cmake_parse_arguments( + RIEF "" "NAME;VERSION;SOURCE_DIR;BINARY_DIR;INSTALL_DIR;COMPONENT" "" ${ARGN}) + + if(NOT RIEF_NAME OR NOT RIEF_INSTALL_DIR) + message(SEND_ERROR "Missing NAME / INSTALL_DIR arguments") + return() + endif() + + set(PACKAGE_NAME "${RIEF_NAME}") + string(REPLACE "-" "_" PACKAGE_NAME_UNDERSCORED "${RIEF_NAME}") + + foreach(_TYPE VERSION SOURCE_DIR BINARY_DIR) + if(NOT RIEF_${_TYPE}) + set(RIEF_${_TYPE} "${PROJECT_${_TYPE}}") + endif() + endforeach() + + if(NOT RIEF_COMPONENT) + set(RIEF_COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME}) + endif() + + configure_file( + ${RIEF_SOURCE_DIR}/cmake/Templates/setup-env.sh.in + ${RIEF_BINARY_DIR}/${RIEF_INSTALL_DIR}/${PACKAGE_NAME}/setup-env.sh @ONLY) + + configure_file( + ${RIEF_SOURCE_DIR}/cmake/Templates/modulefile.in + ${RIEF_BINARY_DIR}/${RIEF_INSTALL_DIR}/modulefiles/${PACKAGE_NAME}/${RIEF_VERSION} + @ONLY) + + install( + FILES ${RIEF_BINARY_DIR}/${RIEF_INSTALL_DIR}/${PACKAGE_NAME}/setup-env.sh + DESTINATION ${RIEF_INSTALL_DIR}/${PACKAGE_NAME} + COMPONENT ${RIEF_COMPONENT}) + + install( + FILES + ${RIEF_BINARY_DIR}/${RIEF_INSTALL_DIR}/modulefiles/${PACKAGE_NAME}/${RIEF_VERSION} + DESTINATION ${RIEF_INSTALL_DIR}/modulefiles/${PACKAGE_NAME} + COMPONENT ${RIEF_COMPONENT}) +endfunction() + cmake_policy(POP)