Skip to content

Commit 014196c

Browse files
authored
Merge pull request #25 from MmgTools/develop
Develop
2 parents 2786ab2 + 200856c commit 014196c

File tree

85 files changed

+14816
-5320
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+14816
-5320
lines changed

CMakeLists.txt

Lines changed: 91 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ include(GNUInstallDirs)
1515
#####
1616
###############################################################################
1717
SET (CMAKE_RELEASE_VERSION_MAJOR "1")
18-
SET (CMAKE_RELEASE_VERSION_MINOR "0")
18+
SET (CMAKE_RELEASE_VERSION_MINOR "3")
1919
SET (CMAKE_RELEASE_VERSION_PATCH "0")
20-
SET (CMAKE_RELEASE_DATE "Feb 15, 2019")
20+
SET (CMAKE_RELEASE_DATE "Nov 20, 2020")
2121

2222
SET (CMAKE_RELEASE_VERSION
2323
"${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} )
3535
FILE(MAKE_DIRECTORY ${PMMG_BINARY_DIR})
3636

3737

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+
3842
# To see flags and options of compilation
3943
#SET(CMAKE_VERBOSE_MAKEFILE TRUE)
4044

@@ -59,7 +63,6 @@ MARK_AS_ADVANCED(CMAKE_OSX_ARCHITECTURES
5963
CMAKE_OSX_SYSROOT)
6064

6165
IF(CMAKE_COMPILER_IS_GNUCC)
62-
SET(CMAKE_C_FLAGS " -Wno-char-subscripts ${CMAKE_C_FLAGS}")
6366
IF(APPLE)
6467
# Add flags to the compiler to work on old mac
6568
ADD_DEFINITIONS( -mmacosx-version-min=10.4 -arch x86_64)
@@ -102,19 +105,8 @@ IF(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
102105
SET(CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE} )
103106
ENDIF()
104107

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-
115108
OPTION ( LIBPARMMG_STATIC "Compile static library" ON)
116109
OPTION ( LIBPARMMG_SHARED "Compile dynamic library" OFF)
117-
INVERT_BOOL("LIBPARMMG_STATIC" ${LIBPARMMG_SHARED})
118110

119111
############################################################################
120112
#####
@@ -152,10 +144,9 @@ EXECUTE_PROCESS ( COMMAND ${MPIEXEC} --help mapping
152144
RESULT_VARIABLE CMD_ERROR
153145
OUTPUT_VARIABLE CMD_OUTPUT )
154146

155-
STRING(REGEX REPLACE "\"" " " CMD_OUT ${CMD_OUTPUT})
147+
STRING(REGEX REPLACE "\"" " " CMD_OUT "${CMD_OUTPUT}")
156148

157-
IF ( ${CMD_OUT} MATCHES "oversubscribe" )
158-
MESSAGE ( STATUS "OK" )
149+
IF ( "${CMD_OUT}" MATCHES "oversubscribe" )
159150
SET ( MPI_ARGS "-oversubscribe" )
160151
ENDIF()
161152

@@ -167,46 +158,56 @@ ENDIF()
167158
# Find SCOTCH library?
168159
SET(SCOTCH_DIR "" CACHE PATH "Installation directory for scotch")
169160
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+
179178
ENDIF ( )
180179

180+
181181
############################################################################
182182
#####
183183
##### VTK (to parse (p)vtp/(p)vtu files )
184184
#####
185185
############################################################################
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 ( )
187195

188196
###############################################################################
189197
#####
190198
##### Add dependent options
191199
#####
192200
###############################################################################
193201

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 )
199203
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSE_SCOTCH")
200-
MESSAGE(STATUS
204+
MESSAGE(STATUS
201205
"Compilation with scotch: ${SCOTCH_LIBRARIES}")
202206
SET( LIBRARIES ${LIBRARIES} ${SCOTCH_LIBRARIES})
203207
ENDIF()
204208

205-
# add the VTK library ?
206-
CMAKE_DEPENDENT_OPTION ( USE_VTK "Use VTK I/O" ON
207-
"VTK_FOUND" OFF)
208209

209-
IF ( USE_VTK )
210+
IF ( VTK_FOUND )
210211
ENABLE_LANGUAGE ( CXX )
211212
ADD_DEFINITIONS(-DUSE_VTK)
212213
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}
230231
# forward VTK config
231232
SET ( VTK_CFG -DUSE_VTK=${USE_VTK} -DVTK_DIR=${VTK_DIR} )
232233

233-
# forward compiler (for c++ compatibility)
234+
# forward compiler
234235
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} )
236244

237245
OPTION ( DOWNLOAD_MMG "Download and build automatically Mmg." ON )
238246

239247
IF ( DOWNLOAD_MMG )
240248
UNSET(MMG_DIR CACHE)
241249
UNSET(MMG_BUILDDIR CACHE)
242250

251+
# Use pointmap
252+
OPTION ( USE_POINTMAP "Use map for point tracking" OFF )
253+
243254
EXTERNALPROJECT_ADD ( Mmg
244255
GIT_REPOSITORY https://github.com/MmgTools/mmg.git
245-
GIT_TAG 9bd9ac675c7fef52df46e2cabdd4e9119adad425
256+
GIT_TAG 379209a9bb9b52df5e7a6ca08ae366bf1991960f
246257
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})
250261

251262
EXTERNALPROJECT_GET_PROPERTY ( Mmg BINARY_DIR )
252263
SET ( MMG_BINARY_DIR ${BINARY_DIR} )
@@ -260,10 +271,11 @@ IF ( DOWNLOAD_MMG )
260271

261272
INCLUDE_DIRECTORIES(${MMG_BINARY_DIR}/include)
262273

263-
IF( LIBPARMMG_STATIC )
264-
SET(MMG3D_LIBRARY ${MMG_BINARY_DIR}/lib/libmmg3d${CMAKE_STATIC_LIBRARY_SUFFIX})
265-
ELSE()
274+
IF( LIBPARMMG_SHARED )
266275
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})
267279
ENDIF()
268280
MESSAGE(STATUS
269281
"Compilation with Mmg: ${MMG3D_LIBRARY}")
@@ -275,12 +287,14 @@ IF ( DOWNLOAD_MMG )
275287
INCLUDE_DIRECTORIES(${MMG_SOURCE_DIR}/src/common)
276288

277289
ELSE ( )
278-
MESSAGE ( STATUS "Manual installation of Mmg: please, specify the MMG_DIR and MMG_BUILDDIR CMake variables" )
290+
UNSET ( USE_POINTMAP CACHE )
279291

280292
SET(MMG_DIR "" CACHE PATH "Installation directory for mmg")
281293
SET(MMG_BUILDDIR "" CACHE PATH "Build directory for mmg")
282294

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)
284298

285299
IF(NOT MMG_FOUND )
286300

@@ -292,6 +306,7 @@ ELSE ( )
292306
" MMG_BUILDDIR "
293307
"to your mmg build directory.")
294308
ELSE()
309+
295310
INCLUDE_DIRECTORIES(${MMG_INCLUDE_DIRS})
296311

297312
MESSAGE(STATUS
@@ -351,7 +366,7 @@ ELSE ( )
351366
# add metis library?
352367
SET(METIS_DIR "" CACHE PATH "Installation directory for metis")
353368

354-
FIND_PACKAGE(Metis)
369+
FIND_PACKAGE(METIS)
355370

356371
IF( METIS_FOUND)
357372
OPTION ( USE_METIS "Detected METIS Tool" ON)
@@ -418,23 +433,19 @@ ENDIF ( )
418433
#####
419434
############################################################################
420435

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)
430437

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+
)
436443

437-
ENDIF ()
444+
GENERATE_FORTRAN_HEADER ( pmmg
445+
${PMMG_SOURCE_DIR} libparmmg.h
446+
${PMMG_SHRT_INCLUDE}
447+
${PMMG_BINARY_DIR} libparmmgf.h
448+
)
438449

439450
###############################################################################
440451
#####
@@ -480,7 +491,6 @@ SET(CMAKE_MACOSX_RPATH 1)
480491
############################################################################
481492
SET(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
482493

483-
OPTION ( LIBPARMMG_STATIC "Compile static library" ON)
484494
IF ( LIBPARMMG_STATIC )
485495
ADD_AND_INSTALL_LIBRARY ( lib${PROJECT_NAME}_a STATIC
486496
"${pmmg_library_files}" ${PROJECT_NAME} )
@@ -496,7 +506,6 @@ IF ( LIBPARMMG_STATIC )
496506
ENDIF()
497507

498508
# Compile shared library
499-
OPTION ( LIBPARMMG_SHARED "Compile dynamic library" OFF)
500509
IF ( LIBPARMMG_SHARED )
501510
ADD_AND_INSTALL_LIBRARY ( lib${PROJECT_NAME}_so SHARED
502511
"${pmmg_library_files}" ${PROJECT_NAME} )
@@ -517,24 +526,32 @@ SET( pmmg_headers
517526
${PMMG_BINARY_DIR}/libparmmgf.h
518527
${PMMG_SOURCE_DIR}/libparmmgtypes.h
519528
${PMMG_BINARY_DIR}/libparmmgtypesf.h
529+
${PMMG_BINARY_DIR}/pmmgversion.h
520530
)
531+
IF (NOT WIN32 OR MINGW)
532+
LIST(APPEND pmmg_headers ${PMMG_BINARY_DIR}/git_log_pmmg.h )
533+
ENDIF()
534+
521535

522536
# Install header files in /usr/local or equivalent
523537
INSTALL(FILES ${pmmg_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/parmmg COMPONENT headers )
524538

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} )
526541

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)
531542

532543
install(EXPORT ParMmgTargets
533544
FILE ParMmgTargets.cmake
534545
NAMESPACE ParMmg::
535546
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/parmmg
536547
)
537548

549+
IF (LIBPARMMG_STATIC OR LIBPARMMG_SHARED)
550+
SET(LIBPARMMG_INTERNAL ON )
551+
ELSE()
552+
SET(LIBPARMMG_INTERNAL OFF )
553+
ENDIF()
554+
538555
###############################################################################
539556
#####
540557
##### Compile PMMG executable
@@ -557,7 +574,7 @@ ENDIF ( )
557574
#####
558575
############################################################################
559576

560-
IF (NOT WIN32)
577+
IF (NOT WIN32 OR MINGW)
561578

562579
ADD_CUSTOM_TARGET(GenerateGitHash
563580
COMMAND ./git_log_pmmg.sh ${PROJECT_SOURCE_DIR} ${PMMG_BINARY_DIR}
@@ -613,9 +630,10 @@ IF(DOXYGEN_FOUND)
613630
ENDIF ( DOXYGEN_FOUND )
614631

615632
OPTION ( BUILD_TESTING "Enable / Disable tests" OFF )
633+
616634
CMAKE_DEPENDENT_OPTION (
617635
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 )
619637

620638

621639
INCLUDE( ${PROJECT_SOURCE_DIR}/cmake/testing/pmmg_tests.cmake )
File renamed without changes.

cmake/modules/FindMmg.cmake renamed to cmake/modules/FindMMG.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ set(ENV_MMG_BUILDDIR "$ENV{MMG_BUILDDIR}")
5555

5656
if ( NOT MMG_BUILDDIR )
5757
FIND_PATH(MMG_BUILDDIR_INTERNAL
58-
NAMES src/common/mmgcommon.h
58+
NAMES src/common/mmgcmakedefines.h
5959
HINTS ${ENV_MMG_BUILDDIR} ${MMG_DIR} ${ENV_MMG_DIR}
6060
PATH_SUFFIXES build Build BUILD builds Builds BUILDS
6161
DOC "The mmg build directory"
File renamed without changes.

0 commit comments

Comments
 (0)