Skip to content

Commit 9f0fca7

Browse files
authored
Merge pull request #3 from LIHPC-Computational-Geometry/dev-7.9.0
Dev 7.9.0
2 parents 6fa87c6 + a43e708 commit 9f0fca7

18 files changed

+474
-73
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ option (BUILD_SHARED_LIBS "Creation de bibliotheques dynamiques (defaut : ON)" O
1313

1414
# Divers dépendances optionnelles :
1515
option (MACHINE_TYPES "Définition des types numériques simples." ON)
16+
option (SUMESH "Utilisation de la bibliothèque de sumesh." ON)
1617

1718
# Les formats de fichiers optionnellement supportés :
1819
option (FORMAT_MLI "Format obsolète déconseillé en externe. Requiert HDF145." ON)
1920
option (FORMAT_MLI2 "Format remplaçant le format MLI recommandé partout. Requiert HDF 5 v >= 1.10.0." ON)
2021

2122
add_subdirectory (src)
2223
enable_testing ( )
23-

CMakePresets.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
"cacheVariables":
77
{
88
"MACHINE_TYPES": "OFF",
9-
"FORMAT_MLI": "OFF"
9+
"FORMAT_MLI": "OFF",
10+
"SUMESH": "OFF"
1011
}
1112
}
1213
]

cmake/version.cmake

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@
33
#
44

55
set (LIMA_MAJOR_VERSION "7")
6-
set (LIMA_MINOR_VERSION "8")
7-
set (LIMA_RELEASE_VERSION "1")
6+
set (LIMA_MINOR_VERSION "9")
7+
set (LIMA_RELEASE_VERSION "0")
88
set (LIMA_VERSION ${LIMA_MAJOR_VERSION}.${LIMA_MINOR_VERSION}.${LIMA_RELEASE_VERSION})
99

1010

11-

cmake/workarounds.cmake

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
#
22
# workarounds.cmake
33
#
4-
# Version 0.9.0 (15/11/2021)
4+
# Version 0.11.0 (16/09/2022)
55
#
66
# On définit ici les contournement aux problèmes de type build-system rencontrés dans le projet
77
#
88
include (CMakeDetermineCXXCompiler)
99

1010
message ("CMAKE_SYSTEM_NAME=" ${CMAKE_SYSTEM_NAME})
11-
# EXPURGE_BEGINNING_TAG UNAME
12-
# EXPURGE_COMPLETION_TAG
11+
find_program(CCC_OS_FOUND ccc_os)
12+
if (CCC_OS_FOUND)
13+
execute_process (COMMAND ccc_os OUTPUT_VARIABLE PLATFORM OUTPUT_STRIP_TRAILING_WHITESPACE)
14+
endif (CCC_OS_FOUND)
15+
1316
if (NOT PLATFORM)
1417
execute_process (COMMAND lsb_release -d COMMAND awk "{print $2;}" OUTPUT_VARIABLE PLATFORM OUTPUT_STRIP_TRAILING_WHITESPACE)
1518
endif (NOT PLATFORM)
@@ -51,23 +54,23 @@ if (PLATFORM STREQUAL "Ubuntu")
5154
endif (PLATFORM STREQUAL "Ubuntu")
5255

5356
if (CMAKE_COMPILER_IS_GNUCXX)
54-
if (FORCE_STDC_LIB)
55-
message (FATAL_ERROR "STDLIB FORCED")
56-
if ((PLATFORM STREQUAL "CentOS") OR (PLATFORM STREQUAL "RedHat-7-x86_64") OR (PLATFORM STREQUAL "Atos_7__x86_64") OR (PLATFORM STREQUAL "Rhel_8__x86_64") OR (PLATFORM STREQUAL "RedHat-8-x86_64") OR (PLATFORM STREQUAL "Atos_7__aarch64"))
57+
if ((PLATFORM STREQUAL "CentOS") OR (PLATFORM STREQUAL "RedHat-7-x86_64") OR (PLATFORM STREQUAL "Atos_7__x86_64") OR (PLATFORM STREQUAL "Rhel_8__x86_64"))
5758
# On force le lien à cette version de la libstdc++. C'est nécessaire pour les wrappers swig/python lorsqu'on utilise directement
5859
# le fichier python => chargement par python de _module.so qui, sans cette directive, chargement /lib64/libstdc++.so qui n'aura
5960
# pas une ABI assez récente ...
60-
message ("==> Ajout de la bibliothèque " ${STDC_LIB} " à l'édition des liens.")
61-
link_libraries (${STDC_LIB})
62-
get_filename_component (STDC_LIB_DIR ${STDC_LIB} DIRECTORY)
63-
message ("==> Ajout de du répertoire " ${STDC_LIB_DIR} " à l'édition des liens.")
64-
# link_directories (BEFORE "${STDC_LIB_DIR}")
65-
add_link_options ("-Wl,-rpath,${STDC_LIB_DIR}") # It works
66-
endif ( )
67-
endif (FORCE_STDC_LIB)
61+
message ("==> Ajout de la bibliothèque " ${STDC_LIB} " à l'édition des liens.")
62+
link_libraries (${STDC_LIB})
63+
get_filename_component (STDC_LIB_DIR ${STDC_LIB} DIRECTORY)
64+
message ("==> Ajout de du répertoire " ${STDC_LIB_DIR} " à l'édition des liens.")
65+
# link_directories (BEFORE "${STDC_LIB_DIR}")
66+
add_link_options ("-Wl,-rpath,${STDC_LIB_DIR}") # It works
67+
endif ( )
6868
if (PLATFORM STREQUAL "Atos_7__x86_64") # Malgré include (FindThreads) et target_link_libraries (mylib PUBLIC Threads::Threads) le -lpthread ne suit pas toujours en cmake 3.14
6969
link_libraries (pthread)
7070
endif()
71+
if (PLATFORM STREQUAL "Rhel_8__x86_64")
72+
link_libraries (util dl)
73+
endif()
7174
elseif (CXX_NAME STREQUAL "icpc")
7275
# Alors là c'est très fort. Il n'y a que du c++ et pourtant icpc 17.0.4.196 link avec les libs imf et autres, sans -Wl,-rpath
7376
# Donc on rajoute ça ...
@@ -81,4 +84,3 @@ elseif (CXX_NAME STREQUAL "icpc")
8184
endif (CMAKE_COMPILER_IS_GNUCXX)
8285

8386

84-

configurations/Ubuntu_GNU11.cmake

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
set (GNU_ROOT /usr)
2+
set(CMAKE_C_COMPILER gcc-11)
3+
set(CMAKE_CXX_COMPILER g++-11)
4+
set(CMAKE_CXX_FLAGS -std=c++11)
5+
set(CMAKE_Fortran_COMPILER "${GNU_ROOT}/bin/gfortran")
6+
7+
#set (CMAKE_Fortran_FLAGS "-fdefault-real-8") # I4/R8 insuffisant si des double precision sont déclarés car alors promus en R16
8+
set (CMAKE_Fortran_FLAGS)
9+
if (INT_8)
10+
string(APPEND CMAKE_Fortran_FLAGS " -fdefault-integer-8")
11+
endif (INT_8)
12+
if (REAL_8)
13+
string (APPEND CMAKE_Fortran_FLAGS " -fdefault-real-8 -fdefault-double-8")
14+
endif (REAL_8)
15+
16+
# SWIG_EXECUTABLE : requiert d'être en cache pour fonctionner tout au long de la chaine ...
17+
set (SWIG_EXECUTABLE "/opt/swig/3.0.12/bin/swig" CACHE FILEPATH "Swig exe" FORCE)
18+
19+
message (STATUS "========================================================== VARIABLES DE COMPILATION ==========================================================")
20+
message (STATUS "======================> CMAKE_C_COMPILER =${CMAKE_C_COMPILER}")
21+
message (STATUS "======================> CMAKE_CXX_COMPILER =${CMAKE_CXX_COMPILER}")
22+
message (STATUS "======================> CMAKE_Fortran_COMPILER =${CMAKE_Fortran_COMPILER}")
23+
message (STATUS "======================> CMAKE_C_FLAGS =${CMAKE_C_FLAGS}")
24+
message (STATUS "======================> CMAKE_CXX_FLAGS =${CMAKE_CXX_FLAGS}")
25+
message (STATUS "======================> CMAKE_Fortran_FLAGS =${CMAKE_Fortran_FLAGS}")
26+
message (STATUS "======================> CMAKE_EXE_LINKER_FLAGS_INIT =${CMAKE_EXE_LINKER_FLAGS_INIT}")
27+
message (STATUS "======================> CMAKE_SHARED_LINKER_FLAGS_INIT =${CMAKE_SHARED_LINKER_FLAGS_INIT}")
28+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
set (HDF5_DIR "/opt/HDF5/1.12.0_cmake" CACHE PATH "Chemin d'acces a la bibliotheque HDF5" FORCE)
2+
set (HDF5_ROOT ${HDF5_DIR} CACHE PATH "Chemin d'acces a la bibliotheque HDF5" FORCE)
3+
set (ZLIB_ROOT ${HDF5_DIR} CACHE PATH "Chemin d'acces a la bibliotheque ZLIB utilisée par HDF5" FORCE)
4+
message (STATUS "======================================================== VARIABLES ENVIRONNEMENTALES DEPENDANCES MAILLAGE ========================================================")
5+
message (STATUS "======================> HDF5_DIR =${HDF5_DIR}")
6+
7+
8+
Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
11
set (HDF5_DIR "/opt/HDF5/1.12.0_cmake" CACHE PATH "Chemin d'acces a la bibliotheque HDF5" FORCE)
22
set (HDF5_ROOT ${HDF5_DIR} CACHE PATH "Chemin d'acces a la bibliotheque HDF5" FORCE)
3-
set (ZLIB_ROOT ${HDF5_DIR} CACHE PATH "Chemin d'acces a la bibliotheque ZLIB utilisée par HDF5 et par HDF145" FORCE)
4-
set (HDF145_DIR "/opt/hdf145/1.3.0" CACHE PATH "Chemin d'acces a la bibliotheque HDF 145" FORCE)
5-
set (HDF145_ROOT ${HDF145_DIR} CACHE PATH "Chemin d'acces a la bibliotheque HDF 145" FORCE)
6-
set (HDF145_INCLUDE_DIR "${HDF145_DIR}/include" CACHE PATH "Chemin d'acces aux entetes de la bibliotheque HDF 145" FORCE)
7-
set (HDF145CPP_LIBRARY "${HDF145_DIR}/lib/libhdf145_cpp.so" CACHE PATH "Chemin d'acces aux entetes de la bibliotheque HDF 145" FORCE)
8-
set (HDF145_LIBRARY "${HDF145_DIR}/lib/libhdf145.so" CACHE PATH "Chemin d'acces aux entetes de la bibliotheque HDF 145" FORCE)
3+
set (ZLIB_ROOT ${HDF5_DIR} CACHE PATH "Chemin d'acces a la bibliotheque ZLIB utilisée par HDF5" FORCE)
94
message (STATUS "======================================================== VARIABLES ENVIRONNEMENTALES DEPENDANCES MAILLAGE ========================================================")
105
message (STATUS "======================> HDF5_DIR =${HDF5_DIR}")
11-
message (STATUS "======================> HDF145_DIR =${HDF145_DIR}")
6+
127

138

configurations/build.sh

Lines changed: 207 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
#!/bin/sh
2+
3+
# Exemple d'utilisation :
4+
#
5+
# Installation dans /opt/install de la bibliothèque compilée en I4.R8 avec Xlmlima + tests :
6+
#
7+
# Lima/configurations/build.sh -installdir /tmp/install_lima -builddir /tmp/build_lima -toolchain ~/Lima/configurations/Ubuntu_GNU11.cmake -meshparameters ~/Lima/configurations/Ubuntu_GNU11_external_meshlibs.cmake -i8 OFF -r8 ON -python 3
8+
#
9+
# ATTENTION : les chemins donnés doivent être en absolus
10+
#
11+
12+
# ATTENTION : S'ASSURER QUE LA VERSION UTILISEE DE CMAKE EST >= 3.14
13+
14+
# # =============================================================================================================================================
15+
# Pour une installation en production : -debug OFF -production ON
16+
# Pour une installation en mode développement/tests de non régression : -debug OFF -production OFF
17+
# Pour une installation en mode développement : -debug ON -production OFF
18+
# =============================================================================================================================================
19+
20+
# Rem : -v affiche les lignes au fur et à mesure qu'elles sont exécutées.
21+
#set -eo pipefail
22+
23+
libs='Lima'
24+
25+
26+
# Paramètres par défaut :
27+
# =======================
28+
29+
if [ "$TMPDIR" = "" ]; then
30+
TMPDIR=/tmp/"$USER"
31+
fi
32+
INSTALLDIR="$TMPDIR"
33+
BUILDDIR="$TMPDIR"
34+
DEBUG=OFF
35+
PRODUCTION=ON
36+
NBPROCS=16
37+
PYTHONVERSION=3
38+
39+
# Spécificités application :
40+
INT8=OFF
41+
REAL8=ON
42+
43+
# Paramètres utilisés :
44+
# =====================
45+
46+
# On évite PWD qui peut varier selon la façon d'accéder au répertoire, surtout si il y a des liens ...
47+
SOURCES_DIR=`realpath .`
48+
INSTALL_DIR="$INSTALLDIR"
49+
BUILD_DIR="$BUILDDIR"
50+
TOOLCHAIN_FILE=""
51+
MESHPARAMETERS_FILE=""
52+
ENABLE_DEBUG="$DEBUG"
53+
ENABLE_PRODUCTION="$PRODUCTION"
54+
NB_PROCS="$NBPROCS"
55+
PYTHON_VERSION="$PYTHONVERSION"
56+
# Spécificités application :
57+
INT_8="$INT8"
58+
REAL_8="$REAL8"
59+
60+
61+
# Fonctions :
62+
# ===========
63+
64+
usage ( )
65+
{
66+
echo ""$0" -tmpdir dir -destdir directory -toolchain toolchain.cmakefile -graphicparameters graphicparameters.cmakefile -meshparameters meshparameters.cmake [-procnum num]"
67+
echo "-installdir .................... : répertoire où seront installées toutes les dépendances de ce logiciel. Défaut : "$INSTALLDIR""
68+
echo "-builddir ...................... : répertoire où sera installé le logiciel (sans ses dépendances => faire éventuellement -installdir et -builddir avec le même répertoire). Défaut : "$BUILDDIR""
69+
echo "-production .................... : compilation pour déploiement en production (ON/OFF). Défaut : "$DEBUG" (influence les fichiers d'environnement - binding python utilisés)"
70+
echo "-debug ......................... : compilation en mode debug (ON/OFF). Défaut : "$DEBUG""
71+
echo "-nbprocs ....................... : nombre de processeurs à utiliser. Défaut : "$NBPROCS""
72+
echo "-toolchain ..................... : fichier cmake contenant la déclaration des compilateurs utilisés."
73+
echo "-meshparameters ................ : fichier cmake contenant la déclaration des variables cmake propres au maillage."
74+
# Spécificités applications :
75+
echo "-i8 ............................ : entiers sur 8 bits (ON/OFF). Défaut : "$INT8""
76+
echo "-r8 ............................ : floats sur 8 bits (ON/OFF). Défaut : "$REAL8""
77+
echo "-python ........................ : (2/3). Défaut : "$PYTHON_VERSION""
78+
} # usage
79+
80+
81+
parse_args ( )
82+
{
83+
echo "=====================> EXECUTION DU SCRIPT "$0" TRAITEMENT DES PARAMETRES TRANSMIS A LA LIGNE DE COMMANDE :"
84+
while [ "$1" != "" ]; do
85+
case $1 in
86+
-h | -help | --help) usage
87+
exit
88+
;;
89+
-installdir) shift
90+
INSTALL_DIR=$1
91+
;;
92+
-builddir) shift
93+
BUILD_DIR=$1
94+
;;
95+
-production) shift
96+
ENABLE_PRODUCTION=$1
97+
;;
98+
-debug) shift
99+
ENABLE_DEBUG=$1
100+
;;
101+
-nbprocs) shift
102+
NB_PROCS=$1
103+
;;
104+
-toolchain) shift
105+
TOOLCHAIN_FILE=$1
106+
;;
107+
-meshparameters) shift
108+
MESHPARAMETERS_FILE=$1
109+
;;
110+
-i8) shift
111+
INT_8=$1
112+
;;
113+
-r8) shift
114+
REAL_8=$1
115+
;;
116+
-python) shift
117+
PYTHON_VERSION=$1
118+
;;
119+
* ) echo "Erreur, argument inconnu : $1"
120+
usage
121+
exit 1
122+
esac
123+
shift
124+
done
125+
126+
echo "=====================> EXECUTION DU SCRIPT "$0" TRAITEMENT DES PARAMETRES TRANSMIS A LA LIGNE DE COMMANDE EFFECTUE"
127+
} # parse_args
128+
129+
130+
validate_files ( )
131+
{
132+
echo "=====================> VALIDATION DE L'EXISTENCE DES FICHIERS DE PARAMETRAGE ..."
133+
if [ ! -e $TOOLCHAIN_FILE ]
134+
then
135+
echo "Fichier de variables cmake contenant la déclaration des compilateurs utilisés invalide ($TOOLCHAIN_FILE)."
136+
exit -1
137+
fi
138+
if [ ! -e $OSPARAMETERS_FILE ]
139+
then
140+
echo "Fichier de variables cmake contenant la déclaration déclaration des variables cmake propres à cet environnement invalide ($OSPARAMETERS_FILE)."
141+
exit -1
142+
fi
143+
if [ ! -e $MESHPARAMETERS_FILE ]
144+
then
145+
echo "Fichier de variables cmake propres au maillage invalide ($MESHPARAMETERS_FILE)."
146+
exit -1
147+
fi
148+
echo "=====================> EXISTENCE DES FICHIERS DE PARAMETRAGE VALIDEE"
149+
} # validate_files
150+
151+
152+
# Paramètres composés utilisés :
153+
# ==============================
154+
155+
parse_args $*
156+
validate_files
157+
158+
INT_4=ON
159+
if [ $INT_8 = ON ]
160+
then
161+
INT_4=OFF
162+
fi
163+
REAL_4=ON
164+
if [ $REAL_8 = ON ]
165+
then
166+
REAL_4=OFF
167+
fi
168+
if [ $PYTHON_VERSION != "2" ] && [ $PYTHON_VERSION != "3" ]
169+
then
170+
echo "Version de python invalide : $PYTHON_VERSION. Version attendue : 2 ou 3."
171+
exit -1
172+
fi
173+
174+
COMMON_ARGS="-DBUILD_SHARED_LIBS:BOOL=ON -DINT_8:BOOL=$INT_8 -DREAL_8:BOOL=$REAL_8" # Toujours en mode shared, pour le scripting
175+
if [ $PYTHON_VERSION = 3 ]
176+
then
177+
COMMON_ARGS="$COMMON_ARGS -DUSE_PYTHON_3:BOOL=ON"
178+
fi
179+
LIMA_ARGS="-DBUILD_XLMLIMA:BOOL=ON -DBUILD_TESTS:BOOL=ON -DBUILD_SCRIPTING:BOOL=ON -DMACHINE_TYPES:BOOL=OFF -DSUMESH:BOOL=OFF"
180+
CMAKE_CFLAGS_ARGS='-DUSING_NAMESPACES'
181+
if [ $ENABLE_DEBUG = ON ]
182+
then
183+
PRODUCTION_MODE="Debug"
184+
else
185+
PRODUCTION_MODE="Release"
186+
fi
187+
188+
# Spécifier le nombre de processeurs au build :
189+
export CMAKE_BUILD_PARALLEL_LEVEL="$NB_PROCS"
190+
191+
# Les bibliothèques et produits maison sous cmake :
192+
for lib in $libs
193+
do
194+
echo "==> PREPARING " $lib " ..."
195+
echo "COMMON ARGS="$COMMON_ARGS
196+
echo "ADDITIONNAL_LIBS_ARGS="$SABRE_COMMON_ARGS
197+
LIB_BUILD_DIR=$BUILD_DIR/$lib
198+
umask u=rwx,g=rwx,o=rx; mkdir -p $LIB_BUILD_DIR
199+
umask u=rwx,g=rwx,o=rx; cd $LIB_BUILD_DIR; cmake -DCMAKE_BUILD_TYPE:STRING="$PRODUCTION_MODE" -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
200+
-DCMAKE_PREFIX_PATH="$INSTALL_DIR" -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN_FILE" \
201+
-C"$MESHPARAMETERS_FILE" \
202+
-DPRODUCTION="$ENABLE_PRODUCTION" \
203+
$COMMON_ARGS $LIMA_ARGS $ADDITIONNAL_LIBS_ARGS -DEXTRA_CXX_FLAGS="$CMAKE_CFLAGS_ARGS" \
204+
-S $SOURCES_DIR/$lib -B . ; cmake --build $LIB_BUILD_DIR; make install
205+
echo "==> " $lib " PREPARED."
206+
done # for lib in $libs
207+

0 commit comments

Comments
 (0)