@@ -15,9 +15,9 @@ include(GNUInstallDirs)
15
15
#####
16
16
###############################################################################
17
17
SET (CMAKE_RELEASE_VERSION_MAJOR "1" )
18
- SET (CMAKE_RELEASE_VERSION_MINOR "0 " )
18
+ SET (CMAKE_RELEASE_VERSION_MINOR "3 " )
19
19
SET (CMAKE_RELEASE_VERSION_PATCH "0" )
20
- SET (CMAKE_RELEASE_DATE "Feb 15, 2019 " )
20
+ SET (CMAKE_RELEASE_DATE "Nov 20, 2020 " )
21
21
22
22
SET (CMAKE_RELEASE_VERSION
23
23
"${CMAKE_RELEASE_VERSION_MAJOR} .${CMAKE_RELEASE_VERSION_MINOR} .${CMAKE_RELEASE_VERSION_PATCH} " )
@@ -35,6 +35,10 @@ SET(PMMG_INCLUDE ${PROJECT_BINARY_DIR}/include/${PMMG_SHRT_INCLUDE} )
35
35
FILE (MAKE_DIRECTORY ${PMMG_BINARY_DIR} )
36
36
37
37
38
+ # Create pmmgversion.h file with the release infos
39
+ CONFIGURE_FILE (${CMAKE_CURRENT_SOURCE_DIR} /src/pmmgversion.h.in
40
+ ${PMMG_BINARY_DIR} /pmmgversion.h @ONLY )
41
+
38
42
# To see flags and options of compilation
39
43
#SET(CMAKE_VERBOSE_MAKEFILE TRUE)
40
44
@@ -59,7 +63,6 @@ MARK_AS_ADVANCED(CMAKE_OSX_ARCHITECTURES
59
63
CMAKE_OSX_SYSROOT )
60
64
61
65
IF (CMAKE_COMPILER_IS_GNUCC )
62
- SET (CMAKE_C_FLAGS " -Wno-char-subscripts ${CMAKE_C_FLAGS} " )
63
66
IF (APPLE )
64
67
# Add flags to the compiler to work on old mac
65
68
ADD_DEFINITIONS ( -mmacosx-version-min=10.4 -arch x86_64 )
@@ -102,19 +105,8 @@ IF(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
102
105
SET (CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE} )
103
106
ENDIF ()
104
107
105
- # Only allow building of static OR shared libraries
106
- SET (LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR} /lib )
107
- FUNCTION (INVERT_BOOL OUTVAR INVAR )
108
- IF (${INVAR} )
109
- SET (${OUTVAR} OFF PARENT_SCOPE )
110
- ELSE ()
111
- SET (${OUTVAR} ON PARENT_SCOPE )
112
- ENDIF ()
113
- ENDFUNCTION ()
114
-
115
108
OPTION ( LIBPARMMG_STATIC "Compile static library" ON )
116
109
OPTION ( LIBPARMMG_SHARED "Compile dynamic library" OFF )
117
- INVERT_BOOL ("LIBPARMMG_STATIC" ${LIBPARMMG_SHARED} )
118
110
119
111
############################################################################
120
112
#####
@@ -152,10 +144,9 @@ EXECUTE_PROCESS ( COMMAND ${MPIEXEC} --help mapping
152
144
RESULT_VARIABLE CMD_ERROR
153
145
OUTPUT_VARIABLE CMD_OUTPUT )
154
146
155
- STRING (REGEX REPLACE "\" " " " CMD_OUT ${CMD_OUTPUT} )
147
+ STRING (REGEX REPLACE "\" " " " CMD_OUT " ${CMD_OUTPUT} " )
156
148
157
- IF ( ${CMD_OUT} MATCHES "oversubscribe" )
158
- MESSAGE ( STATUS "OK" )
149
+ IF ( "${CMD_OUT} " MATCHES "oversubscribe" )
159
150
SET ( MPI_ARGS "-oversubscribe" )
160
151
ENDIF ()
161
152
@@ -167,46 +158,56 @@ ENDIF()
167
158
# Find SCOTCH library?
168
159
SET (SCOTCH_DIR "" CACHE PATH "Installation directory for scotch" )
169
160
LIST (APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR} /cmake/modules )
170
- FIND_PACKAGE (Scotch )
171
-
172
- IF ( NOT SCOTCH_FOUND )
173
- MESSAGE ( WARNING "Scotch library not found:"
174
- "Using scotch reduce the execution time of mmg3d "
175
- "(see https://gforge.inria.fr/frs/?group_id=248 to download it)."
176
- "If you have already installed Scotch and want to use it, "
177
- "please set the CMake variable or environment variable SCOTCH_DIR "
178
- "to your scotch directory." )
161
+
162
+ # add Scotch library?
163
+ OPTION ( USE_SCOTCH "Use SCOTCH TOOL for renumbering" ON )
164
+
165
+ IF ( USE_SCOTCH )
166
+
167
+ FIND_PACKAGE (SCOTCH )
168
+
169
+ IF ( NOT SCOTCH_FOUND )
170
+ MESSAGE ( WARNING "Scotch library not found:"
171
+ "Using scotch reduce the execution time of mmg3d "
172
+ "(see https://gforge.inria.fr/frs/?group_id=248 to download it)."
173
+ "If you have already installed Scotch and want to use it, "
174
+ "please set the CMake variable or environment variable SCOTCH_DIR "
175
+ "to your scotch directory." )
176
+ ENDIF ( )
177
+
179
178
ENDIF ( )
180
179
180
+
181
181
############################################################################
182
182
#####
183
183
##### VTK (to parse (p)vtp/(p)vtu files )
184
184
#####
185
185
############################################################################
186
- FIND_PACKAGE (VTK )
186
+ OPTION ( USE_VTK "Use VTK I/O" ON )
187
+
188
+ IF ( USE_VTK )
189
+ FIND_PACKAGE (VTK QUIET )
190
+
191
+ IF ( NOT VTK_FOUND )
192
+ MESSAGE ( WARNING "VTK library not found: vtk I/O will not be available." )
193
+ ENDIF ( )
194
+ ENDIF ( )
187
195
188
196
###############################################################################
189
197
#####
190
198
##### Add dependent options
191
199
#####
192
200
###############################################################################
193
201
194
- # add Scotch library?
195
- CMAKE_DEPENDENT_OPTION ( USE_SCOTCH "Use SCOTCH TOOL for renumbering" ON
196
- "SCOTCH_FOUND" OFF )
197
-
198
- IF ( USE_SCOTCH )
202
+ IF ( SCOTCH_FOUND )
199
203
SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_SCOTCH" )
200
- MESSAGE (STATUS
204
+ MESSAGE (STATUS
201
205
"Compilation with scotch: ${SCOTCH_LIBRARIES} " )
202
206
SET ( LIBRARIES ${LIBRARIES} ${SCOTCH_LIBRARIES} )
203
207
ENDIF ()
204
208
205
- # add the VTK library ?
206
- CMAKE_DEPENDENT_OPTION ( USE_VTK "Use VTK I/O" ON
207
- "VTK_FOUND" OFF )
208
209
209
- IF ( USE_VTK )
210
+ IF ( VTK_FOUND )
210
211
ENABLE_LANGUAGE ( CXX )
211
212
ADD_DEFINITIONS (-DUSE_VTK )
212
213
MESSAGE ( STATUS "Compilation with VTK: add vtp and vtu I/O." )
@@ -230,23 +231,33 @@ SET ( SCOTCH_CFG -DUSE_SCOTCH=${USE_SCOTCH} -DSCOTCH_DIR=${SCOTCH_DIR}
230
231
# forward VTK config
231
232
SET ( VTK_CFG -DUSE_VTK=${USE_VTK} -DVTK_DIR=${VTK_DIR} )
232
233
233
- # forward compiler (for c++ compatibility)
234
+ # forward compiler
234
235
SET ( COMPILER_CFG -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
235
- -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} )
236
+ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
237
+ -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER} )
238
+
239
+ # forward flags
240
+ SET ( FLAGS_CFG -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
241
+ -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
242
+ -DCMAKE_Fortran_FLAGS=${CMAKE_Fortran_FLAGS}
243
+ -DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS} )
236
244
237
245
OPTION ( DOWNLOAD_MMG "Download and build automatically Mmg." ON )
238
246
239
247
IF ( DOWNLOAD_MMG )
240
248
UNSET (MMG_DIR CACHE )
241
249
UNSET (MMG_BUILDDIR CACHE )
242
250
251
+ # Use pointmap
252
+ OPTION ( USE_POINTMAP "Use map for point tracking" OFF )
253
+
243
254
EXTERNALPROJECT_ADD ( Mmg
244
255
GIT_REPOSITORY https://github.com/MmgTools/mmg.git
245
- GIT_TAG 9bd9ac675c7fef52df46e2cabdd4e9119adad425
256
+ GIT_TAG 379209a9bb9b52df5e7a6ca08ae366bf1991960f
246
257
INSTALL_COMMAND echo "Mmg installation DISABLED"
247
- CMAKE_ARGS ${MMG_ARGS} -DUSE_ELAS=OFF ${COMPILER_CFG}
248
- ${SCOTCH_CFG} ${VTK_CFG}
249
- -DBUILD=MMG -DBUILD_SHARED_LIBS=${LIBPARMMG_SHARED} )
258
+ CMAKE_ARGS ${MMG_ARGS} -DUSE_ELAS=OFF ${COMPILER_CFG} ${FLAGS_CFG}
259
+ ${SCOTCH_CFG} ${VTK_CFG} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
260
+ -DBUILD=MMG -DBUILD_SHARED_LIBS=${LIBPARMMG_SHARED} -DUSE_POINTMAP=${USE_POINTMAP} )
250
261
251
262
EXTERNALPROJECT_GET_PROPERTY ( Mmg BINARY_DIR )
252
263
SET ( MMG_BINARY_DIR ${BINARY_DIR} )
@@ -260,10 +271,11 @@ IF ( DOWNLOAD_MMG )
260
271
261
272
INCLUDE_DIRECTORIES (${MMG_BINARY_DIR} /include )
262
273
263
- IF ( LIBPARMMG_STATIC )
264
- SET (MMG3D_LIBRARY ${MMG_BINARY_DIR} /lib/libmmg3d${CMAKE_STATIC_LIBRARY_SUFFIX} )
265
- ELSE ()
274
+ IF ( LIBPARMMG_SHARED )
266
275
SET (MMG3D_LIBRARY ${MMG_BINARY_DIR} /lib/libmmg3d${CMAKE_SHARED_LIBRARY_SUFFIX} )
276
+ ELSE ()
277
+ # default behaviour is to link static libs
278
+ SET (MMG3D_LIBRARY ${MMG_BINARY_DIR} /lib/libmmg3d${CMAKE_STATIC_LIBRARY_SUFFIX} )
267
279
ENDIF ()
268
280
MESSAGE (STATUS
269
281
"Compilation with Mmg: ${MMG3D_LIBRARY} " )
@@ -275,12 +287,14 @@ IF ( DOWNLOAD_MMG )
275
287
INCLUDE_DIRECTORIES (${MMG_SOURCE_DIR} /src/common )
276
288
277
289
ELSE ( )
278
- MESSAGE ( STATUS "Manual installation of Mmg: please, specify the MMG_DIR and MMG_BUILDDIR CMake variables" )
290
+ UNSET ( USE_POINTMAP CACHE )
279
291
280
292
SET (MMG_DIR "" CACHE PATH "Installation directory for mmg" )
281
293
SET (MMG_BUILDDIR "" CACHE PATH "Build directory for mmg" )
282
294
283
- FIND_PACKAGE (Mmg )
295
+ MESSAGE ( STATUS "Manual installation of Mmg: please, specify the MMG_DIR and MMG_BUILDDIR CMake variables" )
296
+
297
+ FIND_PACKAGE (MMG )
284
298
285
299
IF (NOT MMG_FOUND )
286
300
@@ -292,6 +306,7 @@ ELSE ( )
292
306
" MMG_BUILDDIR "
293
307
"to your mmg build directory." )
294
308
ELSE ()
309
+
295
310
INCLUDE_DIRECTORIES (${MMG_INCLUDE_DIRS} )
296
311
297
312
MESSAGE (STATUS
@@ -351,7 +366,7 @@ ELSE ( )
351
366
# add metis library?
352
367
SET (METIS_DIR "" CACHE PATH "Installation directory for metis" )
353
368
354
- FIND_PACKAGE (Metis )
369
+ FIND_PACKAGE (METIS )
355
370
356
371
IF ( METIS_FOUND )
357
372
OPTION ( USE_METIS "Detected METIS Tool" ON )
@@ -418,23 +433,19 @@ ENDIF ( )
418
433
#####
419
434
############################################################################
420
435
421
- IF (NOT WIN32 )
422
-
423
- ADD_EXECUTABLE (genheader_pmmg ${PROJECT_SOURCE_DIR} /scripts/genheader.c )
424
-
425
- GENERATE_FORTRAN_HEADER ( pmmgtypes
426
- ${PMMG_SOURCE_DIR} libparmmgtypes.h
427
- ${PMMG_SHRT_INCLUDE}
428
- ${PMMG_BINARY_DIR} libparmmgtypesf.h
429
- )
436
+ ADD_EXECUTABLE (genheader_pmmg ${PROJECT_SOURCE_DIR} /scripts/genheader.c )
430
437
431
- GENERATE_FORTRAN_HEADER ( pmmg
432
- ${PMMG_SOURCE_DIR} libparmmg .h
433
- ${PMMG_SHRT_INCLUDE}
434
- ${PMMG_BINARY_DIR} libparmmgf .h
435
- )
438
+ GENERATE_FORTRAN_HEADER ( pmmgtypes
439
+ ${PMMG_SOURCE_DIR} libparmmgtypes .h
440
+ ${PMMG_SHRT_INCLUDE}
441
+ ${PMMG_BINARY_DIR} libparmmgtypesf .h
442
+ )
436
443
437
- ENDIF ()
444
+ GENERATE_FORTRAN_HEADER ( pmmg
445
+ ${PMMG_SOURCE_DIR} libparmmg.h
446
+ ${PMMG_SHRT_INCLUDE}
447
+ ${PMMG_BINARY_DIR} libparmmgf.h
448
+ )
438
449
439
450
###############################################################################
440
451
#####
@@ -480,7 +491,6 @@ SET(CMAKE_MACOSX_RPATH 1)
480
491
############################################################################
481
492
SET (LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR} /lib )
482
493
483
- OPTION ( LIBPARMMG_STATIC "Compile static library" ON )
484
494
IF ( LIBPARMMG_STATIC )
485
495
ADD_AND_INSTALL_LIBRARY ( lib${PROJECT_NAME}_a STATIC
486
496
"${pmmg_library_files} " ${PROJECT_NAME} )
@@ -496,7 +506,6 @@ IF ( LIBPARMMG_STATIC )
496
506
ENDIF ()
497
507
498
508
# Compile shared library
499
- OPTION ( LIBPARMMG_SHARED "Compile dynamic library" OFF )
500
509
IF ( LIBPARMMG_SHARED )
501
510
ADD_AND_INSTALL_LIBRARY ( lib${PROJECT_NAME}_so SHARED
502
511
"${pmmg_library_files} " ${PROJECT_NAME} )
@@ -517,24 +526,32 @@ SET( pmmg_headers
517
526
${PMMG_BINARY_DIR} /libparmmgf.h
518
527
${PMMG_SOURCE_DIR} /libparmmgtypes.h
519
528
${PMMG_BINARY_DIR} /libparmmgtypesf.h
529
+ ${PMMG_BINARY_DIR} /pmmgversion.h
520
530
)
531
+ IF (NOT WIN32 OR MINGW )
532
+ LIST (APPEND pmmg_headers ${PMMG_BINARY_DIR} /git_log_pmmg.h )
533
+ ENDIF ()
534
+
521
535
522
536
# Install header files in /usr/local or equivalent
523
537
INSTALL (FILES ${pmmg_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /parmmg COMPONENT headers )
524
538
525
- COPY_FORTRAN_HEADER_AND_CREATE_TARGET ( ${PMMG_BINARY_DIR} ${PMMG_INCLUDE} )
539
+ # Copy header files in project directory at every build step
540
+ COPY_HEADERS_AND_CREATE_TARGET ( ${PMMG_SOURCE_DIR} ${PMMG_BINARY_DIR} ${PMMG_INCLUDE} )
526
541
527
- # Copy header files in project directory at configuration step
528
- # (generated file don't exists yet or are outdated)
529
- FILE (INSTALL ${pmmg_headers} DESTINATION ${PMMG_INCLUDE}
530
- PATTERN "libparmmg*f.h" EXCLUDE )
531
542
532
543
install (EXPORT ParMmgTargets
533
544
FILE ParMmgTargets.cmake
534
545
NAMESPACE ParMmg::
535
546
DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/parmmg
536
547
)
537
548
549
+ IF (LIBPARMMG_STATIC OR LIBPARMMG_SHARED )
550
+ SET (LIBPARMMG_INTERNAL ON )
551
+ ELSE ()
552
+ SET (LIBPARMMG_INTERNAL OFF )
553
+ ENDIF ()
554
+
538
555
###############################################################################
539
556
#####
540
557
##### Compile PMMG executable
@@ -557,7 +574,7 @@ ENDIF ( )
557
574
#####
558
575
############################################################################
559
576
560
- IF (NOT WIN32 )
577
+ IF (NOT WIN32 OR MINGW )
561
578
562
579
ADD_CUSTOM_TARGET (GenerateGitHash
563
580
COMMAND ./git_log_pmmg.sh ${PROJECT_SOURCE_DIR} ${PMMG_BINARY_DIR}
@@ -613,9 +630,10 @@ IF(DOXYGEN_FOUND)
613
630
ENDIF ( DOXYGEN_FOUND )
614
631
615
632
OPTION ( BUILD_TESTING "Enable / Disable tests" OFF )
633
+
616
634
CMAKE_DEPENDENT_OPTION (
617
635
ONLY_LIBRARY_TESTS "Enable / Disable tests hosted outside the ParMmg repos
618
- (non library tests)" OFF "BUILD_TESTING" OFF )
636
+ (non library tests)" OFF "BUILD_TESTING;LIBPARMMG_INTERNAL " OFF )
619
637
620
638
621
639
INCLUDE ( ${PROJECT_SOURCE_DIR} /cmake/testing/pmmg_tests.cmake )
0 commit comments