Files
sunhpc-soft/cmake/ModuleEnv.cmake
2026-06-14 23:45:57 +08:00

66 lines
1.8 KiB
CMake

#
# Environment Module 环境模块生成脚本
#
# 生成 module 环境文件
# MOD_NAME:模块名 SOFT_PATH:软件安装路径
function(GenerateModule MOD_NAME MOD_VERS SOFT_PATH)
set(MOD_FILE ${MODULES_ROOT}/${MOD_NAME}/${MOD_VERS})
DEPLOY_MSG("Generate module name: ${MOD_NAME}")
DEPLOY_MSG("Generate module vers: ${MOD_VERS}")
DEPLOY_MSG("Generate module file: ${MOD_FILE}")
get_filename_component(MOD_DIR ${MOD_FILE} DIRECTORY)
file(MAKE_DIRECTORY ${MOD_DIR})
string(TOUPPER ${MOD_NAME} MOD_NAME_UPPER)
# 写入 module 模板
file(WRITE ${MOD_FILE}
"#%Module1.0
proc ModulesHelp { } {
puts stderr \"Load ${MOD_NAME} environment\"
}
module-whatis \"Sets up software ${MOD_NAME} \"
set soft_name \"${MOD_NAME}\"
set soft_vers \"${MOD_VERS}\"
set soft_root \"${SOFT_PATH}\"
prepend-path PATH \$soft_root/bin
prepend-path LIBRARY_PATH \$soft_root/lib
prepend-path LD_LIBRARY_PATH \$soft_root/lib
prepend-path LIBRARY_PATH \$soft_root/lib64
prepend-path LD_LIBRARY_PATH \$soft_root/lib64
prepend-path CPATH \$soft_root/include
prepend-path MANPATH \$soft_root/share/man
prepend-path PKG_CONFIG_PATH \$soft_root/lib/pkgconfig
setenv ${MOD_NAME_UPPER}_HOME \$soft_root
if { \[ module-info mode load \] } {
puts stderr \"\${soft_name}_name: \$soft_name - \$soft_vers\"
puts stderr \"\${soft_name}_root: \$soft_root\"
}
")
if(MOD_NAME STREQUAL "openmpi")
file(APPEND ${MOD_FILE}
"
setenv OMPI_ALLOW_RUN_AS_ROOT 1
setenv OMPI_ALLOW_RUN_AS_ROOT_CONFIRM 1
")
endif()
if(MOD_NAME STREQUAL "fftw")
file(APPEND ${MOD_FILE}
"
setenv OMPI_ALLOW_RUN_AS_ROOT 0
setenv OMPI_ALLOW_RUN_AS_ROOT_CONFIRM 0
")
endif()
endfunction()