Maj terminée. Pour consulter la release notes associée voici le lien :
https://about.gitlab.com/releases/2021/07/07/critical-security-release-gitlab-14-0-4-released/

Commits (13)
###
#
# @copyright (c) 2017-2018 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# Univ. Bordeaux. All rights reserved.
#
###
#
# @file GenPkgConfig.cmake
#
# @project MORSE
#
# @version 0.9.0
# @author Florent Pruvost
# @author Mathieu Faverge
# @date 2018-06-21
#
#.rst:
# GenPkgConfig
# ------------
#
# The GenPkgConfig module intend to provide functions to generate a
# pkg-config file with the right format, and a environment file that
# the user can source to setup its environment with the library
# installed.
#
# generate_pkgconfig_files(
# file1 file2 ...
# [PROJECTNAME name]
# [LIBS lib1 lib2 ...]
# [LIBS_PRIVATE lib1 lib2 ...]
# [REQUIRED pkg1 pkg2 ...]
# [REQUIRED_PRIVATE pkg1 pkg2 ...]
# )
# Where:
# - file1, file2, .. are the different input files for the
# pkg-config configuration files.
# - PROJECTNAME defines the prefix of the variables to use for the
# default following values ${PROJECTNAME}_PKGCONFIG_XXX with XXX
# being part of (LIBS, LIBS_PRIVATE, REQUIRED and
# REQUIRED_PRIVATE)
# - LIBS defines the libs of the current project for dynamic
# linking.
# - LIBS_PRIVATE defines the libs of the current project and its
# required dependencies not handled by pkg-config for static
# linking.
# - LIBS defines the additional pkg-config packages needed by the
# project for dynamic linking.
# - LIBS_PRIVATE defines the additional pkg-config packages needed
# by the project for static linking.
#
# The generated files are then installed in the subdirectory
# lib/pkgconfig of the prefix directory.
#
# generate_env_files(
# [PROJECTNAME name]
# )
# Where:
# - PROJECTNAME defines the project name of the library if different
# from CMAKE_PROJECT_NAME.
#
# The generated file is installed in the subdirectory bin of the
# prefix directory.
#
###
###
#
# gpc_convert_incstyle_to_pkgconfig(): convert a libraries list to
# follow the pkg-config style used in gpc_clean_lib_list
#
###
macro(gpc_convert_incstyle_to_pkgconfig _inclist)
set(${_inclist}_CPY "${${_inclist}}")
set(${_inclist} "")
foreach(_dep ${${_inclist}_CPY})
if (${_dep} MATCHES "^-D")
list(APPEND ${_inclist} ${_dep})
else()
list(APPEND ${_inclist} "-I${_dep}")
endif()
endforeach()
endmacro(gpc_convert_incstyle_to_pkgconfig)
###
#
# gpc_convert_libstyle_to_pkgconfig(): convert a libraries list to
# follow the pkg-config style used in gpc_clean_lib_list
#
###
macro(gpc_convert_libstyle_to_pkgconfig _liblist)
# Start by removing duplicates
list(REVERSE ${_liblist})
list(REMOVE_DUPLICATES ${_liblist})
list(REVERSE ${_liblist})
# Convert to pkg-config file format
set(${_liblist}_CPY "${${_liblist}}")
set(${_liblist} "")
foreach(_dep ${${_liblist}_CPY})
if (${_dep} MATCHES "^/")
get_filename_component(dep_libname ${_dep} NAME)
get_filename_component(dep_libdir ${_dep} PATH)
string(REPLACE ".so" "" dep_libname "${dep_libname}")
string(REPLACE ".a" "" dep_libname "${dep_libname}")
string(REPLACE ".dylib" "" dep_libname "${dep_libname}")
string(REPLACE ".dll" "" dep_libname "${dep_libname}")
string(REPLACE "lib" "" dep_libname "${dep_libname}")
list(APPEND ${_liblist} -L${dep_libdir} -l${dep_libname})
elseif(NOT ${_dep} MATCHES "^-")
list(APPEND ${_liblist} "-l${_dep}")
else()
list(APPEND ${_liblist} ${_dep})
endif()
endforeach()
endmacro(gpc_convert_libstyle_to_pkgconfig)
###
#
# gpc_clean_lib_list(): clean libraries lists to follow the pkg-config
# style used in GENERATE_PKGCONFIG_FILE
#
###
macro(gpc_clean_lib_list _package)
if ( ${_package}_PKGCONFIG_INCS )
list(REMOVE_DUPLICATES ${_package}_PKGCONFIG_INCS)
gpc_convert_incstyle_to_pkgconfig(${_package}_PKGCONFIG_INCS)
string(REPLACE ";" " " ${_package}_PKGCONFIG_INCS "${${_package}_PKGCONFIG_INCS}")
endif()
if ( ${_package}_PKGCONFIG_LIBS )
gpc_convert_libstyle_to_pkgconfig(${_package}_PKGCONFIG_LIBS)
string(REPLACE ";" " " ${_package}_PKGCONFIG_LIBS "${${_package}_PKGCONFIG_LIBS}")
endif()
if ( ${_package}_PKGCONFIG_LIBS_PRIVATE )
gpc_convert_libstyle_to_pkgconfig(${_package}_PKGCONFIG_LIBS_PRIVATE)
string(REPLACE ";" " " ${_package}_PKGCONFIG_LIBS_PRIVATE "${${_package}_PKGCONFIG_LIBS_PRIVATE}")
endif()
if ( ${_package}_PKGCONFIG_REQUIRED )
list(REMOVE_DUPLICATES ${_package}_PKGCONFIG_REQUIRED)
string(REPLACE ";" " " ${_package}_PKGCONFIG_REQUIRED "${${_package}_PKGCONFIG_REQUIRED}")
endif()
if ( ${_package}_PKGCONFIG_REQUIRED_PRIVATE )
list(REMOVE_DUPLICATES ${_package}_PKGCONFIG_REQUIRED_PRIVATE)
string(REPLACE ";" " " ${_package}_PKGCONFIG_REQUIRED_PRIVATE "${${_package}_PKGCONFIG_REQUIRED_PRIVATE}")
endif()
endmacro(gpc_clean_lib_list)
###
#
# generate_pkgconfig_file: generate pkg-config file
#
###
macro(generate_pkgconfig_files)
set(_options )
set(_oneValueArgs PROJECTNAME)
set(_multiValueArgs LIBS LIBS_PRIVATE REQUIRED REQUIRED_PRIVATE)
cmake_parse_arguments(generate_pkgconfig_file
"${_options}" "${_oneValueArgs}"
"${_multiValueArgs}" ${ARGN} )
if ( NOT DEFINED PROJECTNAME )
set( PROJECTNAME ${CMAKE_PROJECT_NAME} )
endif()
set(ARGN ${generate_pkgconfig_file_UNPARSED_ARGUMENTS})
# The link flags specific to this package and any required libraries
# that don't support PkgConfig
list(APPEND ${PROJECTNAME}_PKGCONFIG_LIBS ${LIBS})
# The link flags for private libraries required by this package but not
# exposed to applications
list(APPEND ${PROJECTNAME}_PKGCONFIG_LIBS_PRIVATE ${LIBS_PRIVATE})
# A list of packages required by this package
list(APPEND ${PROJECTNAME}_PKGCONFIG_REQUIRED ${REQUIRED})
# A list of private packages required by this package but not exposed to
# applications
list(APPEND ${PROJECTNAME}_PKGCONFIG_REQUIRED_PRIVATE ${REQUIRED_PRIVATE})
# Define required package
# -----------------------
gpc_clean_lib_list(${PROJECTNAME})
foreach(f IN LISTS ARGN)
get_filename_component(fname "${f}" NAME_WE)
# Create .pc files
# ----------------
configure_file(
${f}
"${CMAKE_BINARY_DIR}/lib/pkgconfig/${fname}.pc" @ONLY)
# installation
# ------------
install(FILES
"${CMAKE_BINARY_DIR}/lib/pkgconfig/${fname}.pc"
DESTINATION lib/pkgconfig )
endforeach()
endmacro(generate_pkgconfig_files)
###
#
# generate_env_file: generate pkf-config files
#
###
macro(generate_env_file)
set(_options )
set(_oneValueArgs PROJECTNAME)
set(_multiValueArgs )
cmake_parse_arguments(generate_env_file
"${_options}" "${_oneValueArgs}"
"${_multiValueArgs}" ${ARGN} )
if ( NOT DEFINED PROJECTNAME )
set( PROJECTNAME ${CMAKE_PROJECT_NAME} )
endif()
string(TOLOWER ${PROJECTNAME} LONAME)
string(TOUPPER ${PROJECTNAME} UPNAME)
# Create .sh file
# ---------------
configure_file(
"${MORSE_CMAKE_MODULE_PATH}/env.sh.in"
"${CMAKE_CURRENT_BINARY_DIR}/bin/${LONAME}_env.sh" @ONLY)
# installation
# ------------
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/bin/${LONAME}_env.sh"
DESTINATION bin)
endmacro(generate_env_file)
##
## @end file GenPkgConfig.cmake
##
#
# @file @LONAME@_env.sh
#
# @copyright 2016-2018 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
# Univ. Bordeaux. All rights reserved.
#
# @version 0.9.0
# @author Mathieu Faverge
# @date 2018-06-21
#
#!/bin/sh
LIB=@LONAME@
export @UPNAME@_DIR=@CMAKE_INSTALL_PREFIX@
for i in PATH DYLD_LIBRARY_PATH LD_LIBRARY_PATH LIBRARY_PATH LD_RUN_PATH INCLUDE INCLUDE_PATH PKG_CONFIG_PATH PYTHONPATH
do
for j in /@LONAME@
do
cmd1="echo \\\"\$$i\\\" | sed -E 's+^(\(.*:|\))[^:]*${j}[^:]*(\(|:.*\))$+\1\2+' | sed 's/::/:/' | sed 's/^://' | sed 's/:$//' "
temp=`eval $cmd1`;
eval "$i=$temp";
done
done
export PATH=$PATH:$@UPNAME@_DIR/bin
export LD_RUN_PATH=$LD_RUN_PATH:$@UPNAME@_DIR/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$@UPNAME@_DIR/lib
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$@UPNAME@_DIR/lib
export LIBRARY_PATH=$LIBRARY_PATH:$@UPNAME@_DIR/lib
export PYTHONPATH=$PYTHONPATH:$@UPNAME@_DIR/lib/python
export INCLUDE=$INCLUDE:$@UPNAME@_DIR/include
export INCLUDE_PATH=$INCLUDE_PATH:$@UPNAME@_DIR/include
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$@UPNAME@_DIR/lib/pkgconfig
......@@ -537,15 +537,13 @@ if( (NOT BLAS_FOUND_WITH_PKGCONFIG) OR BLAS_GIVEN_BY_USER )
endif()
endif()
set(BLAS_CFLAGS_OTHER "")
if (NOT BLA_VENDOR STREQUAL "Intel10_64lp_seq")
if(BLAS_FIND_REQUIRED)
find_package(OpenMP REQUIRED)
else()
find_package(OpenMP)
endif()
if(OPENMP_C_FLAGS)
list(APPEND BLAS_CFLAGS_OTHER "${OPENMP_C_FLAGS}")
endif()
if (BLA_VENDOR STREQUAL "Intel10_64lp" AND BLAS_FIND_REQUIRED)
find_package(OpenMP REQUIRED)
else()
find_package(OpenMP)
endif()
if(OPENMP_C_FLAGS)
list(APPEND BLAS_CFLAGS_OTHER "${OPENMP_C_FLAGS}")
endif()
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
if (BLA_VENDOR STREQUAL "Intel10_32")
......
......@@ -6,7 +6,7 @@
# @copyright (c) 2009-2014 The University of Tennessee and The University
# of Tennessee Research Foundation.
# All rights reserved.
# @copyright (c) 2012-2016 Inria. All rights reserved.
# @copyright (c) 2012-2018 Inria. All rights reserved.
# @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
#
###
......@@ -16,12 +16,18 @@
# find_package(HYPRE
# [REQUIRED]) # Fail with error if hypre is not found
#
# HYPRE depends on the following libraries:
# - MPI
#
# This module finds headers and hypre library.
# Results are reported in variables:
# HYPRE_FOUND - True if headers and requested libraries were found
# HYPRE_INCLUDE_DIRS - hypre include directories
# HYPRE_LIBRARY_DIRS - Link directories for hypre libraries
# HYPRE_LIBRARIES - hypre component libraries to be linked
# HYPRE_FOUND - True if headers and requested libraries were found
# HYPRE_INCLUDE_DIRS - hypre include directories
# HYPRE_LIBRARY_DIRS - Link directories for hypre libraries
# HYPRE_LIBRARIES - hypre component libraries to be linked
# HYPRE_INCLUDE_DIRS_DEP - hypre + dependencies include directories
# HYPRE_LIBRARY_DIRS_DEP - hypre + dependencies link directories
# HYPRE_LIBRARIES_DEP - hypre + dependencies libraries
#
# The user can give specific paths where to find the libraries adding cmake
# options at configure (ex: cmake path/to/project -DHYPRE_DIR=path/to/hypre):
......@@ -32,8 +38,8 @@
# are not given as cmake variable: HYPRE_DIR, HYPRE_INCDIR, HYPRE_LIBDIR
#=============================================================================
# Copyright 2016 Inria
# Copyright 2016 Florent Pruvost
# Copyright 2016-2018 Inria
# Copyright 2016-2018 Florent Pruvost
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file MORSE-Copyright.txt for details.
......@@ -63,6 +69,13 @@ if ( HYPRE_DIR OR ( HYPRE_INCDIR AND HYPRE_LIBDIR) OR ENV_HYPRE_DIR OR (ENV_HYPR
set(HYPRE_GIVEN_BY_USER "TRUE")
endif()
# HYPRE depends on MPI, try to find it
if (HYPRE_FIND_REQUIRED)
find_package(MPI REQUIRED)
else()
find_package(MPI)
endif()
# Looking for include
# -------------------
......@@ -223,6 +236,33 @@ if(HYPRE_LIBRARIES)
set(REQUIRED_LIBDIRS "${HYPRE_LIBRARY_DIRS}")
endif()
set(REQUIRED_LIBS "${HYPRE_LIBRARIES}")
# MPI
if (MPI_FOUND)
if (MPI_C_INCLUDE_PATH)
list(APPEND REQUIRED_INCDIRS "${MPI_C_INCLUDE_PATH}")
endif()
if (MPI_C_LINK_FLAGS)
if (${MPI_C_LINK_FLAGS} MATCHES " -")
string(REGEX REPLACE " -" "-" MPI_C_LINK_FLAGS ${MPI_C_LINK_FLAGS})
endif()
list(APPEND REQUIRED_LDFLAGS "${MPI_C_LINK_FLAGS}")
endif()
list(APPEND REQUIRED_LIBS "${MPI_C_LIBRARIES}")
endif()
# libm
set(M_LIBRARY "M_LIBRARY-NOTFOUND")
find_library(M_LIBRARY NAMES m)
mark_as_advanced(M_LIBRARY)
if(M_LIBRARY)
list(APPEND REQUIRED_LIBS "${M_LIBRARY}")
endif()
# libstdc++
set(stdcpp_LIBRARY "stdcpp_LIBRARY-NOTFOUND")
find_library(stdcpp_LIBRARY NAMES stdc++)
mark_as_advanced(stdcpp_LIBRARY)
if(stdcpp_LIBRARY)
list(APPEND REQUIRED_LIBS "${stdcpp_LIBRARY}")
endif()
# set required libraries for link
finds_remove_duplicates()
......@@ -240,7 +280,12 @@ if(HYPRE_LIBRARIES)
check_function_exists(HYPRE_StructGridCreate HYPRE_WORKS)
mark_as_advanced(HYPRE_WORKS)
if(NOT HYPRE_WORKS)
if(HYPRE_WORKS)
# save link with dependencies
set(HYPRE_LIBRARIES_DEP "${REQUIRED_LIBS}")
set(HYPRE_LIBRARY_DIRS_DEP "${REQUIRED_LIBDIRS}")
set(HYPRE_INCLUDE_DIRS_DEP "${REQUIRED_INCDIRS}")
else()
if(NOT HYPRE_FIND_QUIETLY)
message(STATUS "Looking for HYPRE : test of HYPRE_StructGridCreate with HYPRE library fails")
message(STATUS "CMAKE_REQUIRED_LIBRARIES: ${CMAKE_REQUIRED_LIBRARIES}")
......
......@@ -435,6 +435,9 @@ if (LAPACK_FOUND)
check_function_exists(LAPACKE_dlatms_work LAPACKE_WORKS)
endif()
mark_as_advanced(LAPACKE_WORKS)
unset(LAPACKE_WITH_LASCL CACHE)
check_function_exists(LAPACKE_dlascl LAPACKE_WITH_LASCL)
mark_as_advanced(LAPACKE_WITH_LASCL)
if(LAPACKE_WORKS)
# save link with dependencies
......
......@@ -89,14 +89,14 @@ if (ENABLE_CTEST)
GTG
HQR
HWLOC
#HYPRE module not ready TODO: complete it
HYPRE
LAPACK
LAPACKE
LAPACKEXT
METIS
MPIEXT
MUMPS
#PAMPA not able to install it, link problem with ptscotch
PAMPA
PAPI
PARMETIS
PARSEC
......
......@@ -278,7 +278,7 @@ subs = {
('int', 'float', 'double', 'float', r'\bdouble' ),
('PastixPattern', 'PastixFloat', 'PastixDouble', 'PastixComplex32', r'\bPastixComplex64' ),
('PastixPattern', 'PastixFloat', 'PastixDouble', 'PastixFloat', r'\bPastixDouble' ),
('int', 'float', 'double', 'spm_complex32_t', r'\bspm_complex64_t'),
('int', 'float', 'double', 'spm_complex32_t', r'\bspm_complex64_t'),
('SpmPattern', 'SpmFloat', 'SpmDouble', 'SpmComplex32', r'\bSpmComplex64' ),
('SpmPattern', 'SpmFloat', 'SpmDouble', 'SpmFloat', r'\bSpmDouble' ),
('', 'sizeof_real', 'sizeof_double', 'sizeof_complex', r'\bsizeof_complex_16' ), # before complex
......@@ -333,6 +333,7 @@ subs = {
('', 'CORE_s', 'CORE_d', 'CORE_c', 'CORE_z' ),
('', 'core_s', 'core_d', 'core_c', 'core_z' ),
('', 'CORE_s', 'CORE_d', 'CORE_s', 'CORE_d' ),
('', 'core_s', 'core_d', 'core_s', 'core_d' ),
('', 'cpu_gpu_s', 'cpu_gpu_d', 'cpu_gpu_c', 'cpu_gpu_z' ),
('', 'cublasS', 'cublasD', 'cublasC', 'cublasZ' ),
('', 'CUDA_S', 'CUDA_D', 'CUDA_C', 'CUDA_Z' ),
......@@ -401,6 +402,7 @@ subs = {
('p_spm', 's_spm', 'd_spm', 'c_spm', 'z_spm' ),
('p_bcsc', 's_bcsc', 'd_bcsc', 'c_bcsc', 'z_bcsc' ),
('', 'csc_s', 'csc_d', 'csc_c', 'csc_z' ),
('', 'vec_s', 'vec_d', 'vec_c', 'vec_z' ),
('', 'sequential_s', 'sequential_d', 'sequential_c', 'sequential_z' ),
('', 'coeftab_s', 'coeftab_d', 'coeftab_c', 'coeftab_z' ),
('', 'cblk_s', 'cblk_d', 'cblk_c', 'cblk_z' ),
......@@ -1001,6 +1003,8 @@ subs = {
('', 'STARPU_S', 'STARPU_D', 'STARPU_C', 'STARPU_Z' ),
('', 'pastix_s', 'pastix_d', 'pastix_c', 'pastix_z' ),
('', 'PASTIX_S', 'PASTIX_D', 'PASTIX_C', 'PASTIX_Z' ),
('', 'spm_s', 'spm_d', 'spm_c', r'\bspm_z' ),
('', 'SPM_S', 'SPM_D', 'SPM_C', r'\bSPM_Z' ),
('', 's_', 'd_', 'c_', 'z_' ),
('', 'S_', 'D_', 'C_', 'Z_' ),
('', 'FLT_EPSILON', 'DBL_EPSILON', 'FLT_EPSILON', 'DBL_EPSILON' ),
......