diff --git a/.gitignore b/.gitignore
index 8c2c625c8..6c4035365 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,10 +14,15 @@ doc/doxygen/man
lib
-libexamples/mmg3d/example0/example0_a/mesh.*
-libexamples/mmg3d/example0/example0_b/mesh.*
-libexamples/mmg3d/example1/result0.*
-libexamples/mmg3d/example2/2spheres_*
+libexamples/*/*/mainTESTADJA.c
+libexamples/*/*/*/mesh.*
+libexamples/*/*/result0.*
+libexamples/*/*/2spheres_*
+libexamples/*/*/*.o*
+libexamples/*/*/mesh.*
+libexamples/*/*/cube.3d.*
+libexamples/*/*/cube.s.*
+libexamples/*/*/result.*
ci_tests
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f499a69c1..39f4e04ba 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,7 @@
## =============================================================================
## This file is part of the mmg software package for the tetrahedral
## mesh modification.
-## Copyright (c) Inria - IMB (Université de Bordeaux) - LJLL (UPMC), 2004- .
+## Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- .
##
## mmg is free software: you can redistribute it and/or modify it
## under the terms of the GNU Lesser General Public License as published
@@ -21,6 +21,7 @@
## =============================================================================
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.0)
+INCLUDE(CMakeDependentOption)
PROJECT (mmg)
@@ -29,17 +30,30 @@ PROJECT (mmg)
##### Release version and date
#####
###############################################################################
-SET (CMAKE_RELEASE_VERSION_MAJOR "5")
-SET (CMAKE_RELEASE_VERSION_MINOR "0")
-SET (CMAKE_RELEASE_VERSION_PATCH "0")
-SET (CMAKE_RELEASE_DATE "May 4, 2015")
+SET (CMAKE_RELEASE_VERSION_MAJOR "5" )
+SET (CMAKE_RELEASE_VERSION_MINOR "1" )
+SET (CMAKE_RELEASE_VERSION_PATCH "0" )
+SET (CMAKE_RELEASE_DATE "Dec 4, 2015" )
SET (CMAKE_RELEASE_VERSION
"${CMAKE_RELEASE_VERSION_MAJOR}.${CMAKE_RELEASE_VERSION_MINOR}.${CMAKE_RELEASE_VERSION_PATCH}")
-# Create mmg.h file with the good release infos.
-CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/src/common/mmg.h.in
- ${CMAKE_CURRENT_SOURCE_DIR}/src/common/mmg.h @ONLY)
+###############################################################################
+#####
+##### Set preprocessor flag to detect windows architecture and MinGW
+#####
+###############################################################################
+IF (NOT WIN32)
+ # Set preprocessor flags to say that we are posix and gnu compatible
+ SET (DEF_POSIX "#define POSIX")
+ SET (DEF_GNU "#define GNU")
+ELSEIF(MINGW)
+ SET (DEF_GNU "#define GNU")
+ENDIF ()
+
+# Create mmgcommon.h file with the good release and architecture infos.
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/src/common/mmgcommon.h.in
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/common/mmgcommon.h @ONLY)
###############################################################################
#####
@@ -52,7 +66,6 @@ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/src/common/mmg.h.in
# Executable path
SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
-SET(MMG3D_SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/mmg3d)
SET(MMGS_SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/mmgs)
SET(COMMON_SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/common)
@@ -91,15 +104,13 @@ IF(CMAKE_COMPILER_IS_GNUCC)
ENDIF()
ENDIF()
+CMAKE_DEPENDENT_OPTION ( PROFILING "Enable/Disable PROFILING" OFF
+ "CMAKE_COMPILER_IS_GNUCC" OFF )
-IF(NOT CMAKE_COMPILER_IS_CLANG)
- # Compiler options for profiling... but not possible with clang
- OPTION ( PROFILING "Enable/Disable PROFILING" OFF )
- IF(PROFILING)
- ADD_DEFINITIONS(-pg)
- SET(CMAKE_EXE_LINKER_FLAGS "-pg ${CMAKE_EXE_LINKER_FLAGS}")
- ENDIF(PROFILING)
-ENDIF(NOT CMAKE_COMPILER_IS_CLANG)
+IF(PROFILING)
+ ADD_DEFINITIONS(-pg)
+ SET(CMAKE_EXE_LINKER_FLAGS "-pg ${CMAKE_EXE_LINKER_FLAGS}")
+ENDIF(PROFILING)
###############################################################################
#####
@@ -112,66 +123,61 @@ IF(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
# Set the possible values of build type for cmake-gui
SET_PROPERTY(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release"
"MinSizeRel" "RelWithDebInfo")
- SET(CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE} )
+ SET(CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE})
ENDIF()
SET ( BUILD "MMG" CACHE STRING
- "\"MMG3D\", \"MMGS\" or \"MMG\" to compile both MMGS and MMG3D" )
+ "\"MMG3D\", \"MMGS\",\"MMG2D\", or \"MMG\" to compile both MMGS, MMG3D and MMG2D" )
IF ( BUILD MATCHES "MMGS" )
SET(BUILD_MMG OFF )
SET(BUILD_MMG3D OFF )
SET(BUILD_MMGS ON )
+ SET(BUILD_MMG2D OFF )
ELSEIF ( BUILD MATCHES "MMG3D" )
SET(BUILD_MMG3D ON )
SET(BUILD_MMGS OFF )
SET(BUILD_MMG OFF )
+ SET(BUILD_MMG2D OFF )
+ELSEIF ( BUILD MATCHES "MMG2D" )
+ SET(BUILD_MMG OFF )
+ SET(BUILD_MMG3D OFF )
+ SET(BUILD_MMGS OFF )
+ SET(BUILD_MMG2D ON )
ELSEIF ( BUILD MATCHES "MMG" )
SET(BUILD_MMG ON )
- SET(BUILD_MMGS OFF )
- SET(BUILD_MMG3D OFF )
+ SET(BUILD_MMGS ON )
+ SET(BUILD_MMG3D ON )
+ SET(BUILD_MMG2D ON )
ELSE ( )
- MESSAGE (WARNING "Nothing to build")
-ENDIF()
+ MESSAGE ( ERROR " Nothing to build.\n"
+ "Please choose the target to build (set the BUILD CMake's"
+ " variable to \"MMG\", \"MMG2D\", \"MMGS\" OR"
+ " \"MMG3D\")" )
-IF ( BUILD_MMG3D OR BUILD_MMG )
-
- ############################################################################
- #####
- ##### Fortran header: libmmg3df.h
- #####
- ############################################################################
- IF (NOT WIN32)
- ADD_EXECUTABLE(genheader ${CMAKE_SOURCE_DIR}/scripts/genheader.c)
-
- ADD_CUSTOM_COMMAND(OUTPUT ${MMG3D_SOURCE_DIR}/libmmg3df.h
- COMMAND genheader ${MMG3D_SOURCE_DIR}/libmmg3df.h
- ${MMG3D_SOURCE_DIR}/libmmg3d.h ${CMAKE_SOURCE_DIR}/scripts/genfort.pl
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
- DEPENDS genheader ${MMG3D_SOURCE_DIR}/libmmg3d.h
- ${CMAKE_SOURCE_DIR}/scripts/genfort.pl
- COMMENT "Generating Fortran header"
- )
- ENDIF ()
-
- ############################################################################
- #####
- ##### Choose type of insertion: delaunay kernel or patterns
- #####
- ############################################################################
- # Should we use patterns for insertion istead of delaunay kernel
- OPTION ( PATTERN
- "If ON, insertion by patterns, otherwise insertion by delaunay kernel"
- OFF)
- IF ( NOT PATTERN )
- MESSAGE(STATUS "Vertex insertion by delaunay kernel")
- ELSE()
- MESSAGE(STATUS "Vertex insertion by patterns")
- SET(CMAKE_C_FLAGS "-DPATTERN ${CMAKE_C_FLAGS}")
- ENDIF()
- # Remove the next line to have this option visible in basic cmake mode
- MARK_AS_ADVANCED(PATTERN)
+ENDIF()
+IF ( BUILD_MMG3D OR BUILD_MMGS )
+ SET(BUILD_MMGS3D ON)
+ELSE ()
+ SET(BUILD_MMGS3D OFF)
+ENDIF()
+############################################################################
+#####
+##### Fortran header: libmmgcommonf.h
+#####
+############################################################################
+
+IF ( NOT WIN32 )
+ ADD_EXECUTABLE(genheader ${CMAKE_SOURCE_DIR}/scripts/genheader.c)
+ ADD_CUSTOM_COMMAND(OUTPUT ${COMMON_SOURCE_DIR}/libmmgcommonf.h
+ COMMAND genheader ${COMMON_SOURCE_DIR}/libmmgcommonf.h
+ ${COMMON_SOURCE_DIR}/libmmgcommon.h ${CMAKE_SOURCE_DIR}/scripts/genfort.pl
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ DEPENDS genheader ${COMMON_SOURCE_DIR}/libmmgcommon.h
+ ${CMAKE_SOURCE_DIR}/scripts/genfort.pl
+ COMMENT "Generating Fortran header for libmmgcommon.h file"
+ )
ENDIF()
###############################################################################
@@ -180,459 +186,309 @@ ENDIF()
#####
###############################################################################
# Header files
-INCLUDE_DIRECTORIES(${MMG3D_SOURCE_DIR})
-INCLUDE_DIRECTORIES(${MMGS_SOURCE_DIR})
-
-# Source files
-FILE(
- GLOB
- source_files
- ${MMG3D_SOURCE_DIR}/*.c ${MMG3D_SOURCE_DIR}/*.h
- ${COMMON_SOURCE_DIR}/*.c ${COMMON_SOURCE_DIR}/*.h
- )
-LIST(REMOVE_ITEM source_files
- ${MMG3D_SOURCE_DIR}/mmg3d.c
- ${MMG3D_SOURCE_DIR}/lib${PROJECT_NAME}3d.c
- ${MMG3D_SOURCE_DIR}/lib${PROJECT_NAME}3df.c
- ${REMOVE_FILE})
-FILE(
- GLOB
- main_file
- ${MMG3D_SOURCE_DIR}/mmg3d.c
- )
-FILE(
- GLOB
- lib_file
- ${MMG3D_SOURCE_DIR}/lib${PROJECT_NAME}3d.c
- ${MMG3D_SOURCE_DIR}/lib${PROJECT_NAME}3df.c
- )
-FILE(
- GLOB
- sourcemmgs_files
- ${MMGS_SOURCE_DIR}/*.c ${MMGS_SOURCE_DIR}/*.h
- ${COMMON_SOURCE_DIR}/*.c ${COMMON_SOURCE_DIR}/*.h
- )
-
INCLUDE_DIRECTORIES(${COMMON_SOURCE_DIR})
-IF (NOT WIN32)
+# Libraries
+IF ( NOT WIN32 OR MINGW )
FIND_LIBRARY(M_LIB m)
+ MARK_AS_ADVANCED(FORCE M_LIB)
SET( LIBRARIES ${M_LIB} ${LIBRARIES})
ENDIF()
-IF ( BUILD_MMG3D OR BUILD_MMG )
- ############################################################################
- #####
- ##### Scotch
- #####
- ############################################################################
- # add SCOTCH library?
- SET(SCOTCH_DIR "" CACHE PATH "Installation directory for scotch")
- INCLUDE(cmake/modules/FindScotch.cmake)
-
- IF(SCOTCH_FOUND)
- OPTION ( USE_SCOTCH "Use SCOTCH TOOL for renumbering" ON)
- IF( USE_SCOTCH )
- # Set flags for building test program
- INCLUDE_DIRECTORIES(${SCOTCH_INCLUDE_DIR})
-
- SET(CMAKE_REQUIRED_INCLUDES ${SCOTCH_INCLUDE_DIR})
- SET(CMAKE_REQUIRED_LIBRARIES ${SCOTCH_LIBRARY})
- SET(CMAKE_REQUIRED_LIBRARIES ${SCOTCHERR_LIBRARY})
-
- SET(CMAKE_C_FLAGS "-DUSE_SCOTCH ${CMAKE_C_FLAGS}")
- SET(SCOTCH_LINK_FLAGS "-lpthread")
- MESSAGE(STATUS
- "Compilation with scotch: ${SCOTCH_DIR}$ENV{SCOTCH_DIR}")
- SET( LIBRARIES ${SCOTCH_LINK_FLAGS} ${LIBRARIES})
- SET( LIBRARIES ${SCOTCHERR_LIBRARY} ${LIBRARIES})
- SET( LIBRARIES ${SCOTCH_LIBRARY} ${LIBRARIES})
- ENDIF()
- ELSE ( )
- MESSAGE ( WARNING "Scotch library not found:"
- "Using scotch reduce the execution time of mmg3d "
- "(see https://gforge.inria.fr/frs/?group_id=248 to download it)."
- "If you have already installed Scotch and want to use it, "
- "please set the CMake variable or environment variable SCOTCH_DIR "
- "to your scotch directory.")
- OPTION ( USE_SCOTCH "Use SCOTCH TOOL for renumbering" OFF)
- ENDIF ( )
+############################################################################
+#####
+##### Scotch
+#####
+############################################################################
+# add SCOTCH library?
+IF( USE_SCOTCH )
+ # Set flags for building test program
+ INCLUDE_DIRECTORIES(${SCOTCH_INCLUDE_DIR})
+
+ SET(CMAKE_REQUIRED_INCLUDES ${SCOTCH_INCLUDE_DIR})
+ SET(CMAKE_REQUIRED_LIBRARIES ${SCOTCH_LIBRARY})
+ SET(CMAKE_REQUIRED_LIBRARIES ${SCOTCHERR_LIBRARY})
+
+ SET(CMAKE_C_FLAGS "-DUSE_SCOTCH ${CMAKE_C_FLAGS}")
+
+ IF ( NOT WIN32 )
+ SET(SCOTCH_LINK_FLAGS "-lpthread")
+ ELSE ()
+ # On win32, it is easier to compile scotch without the pthreads so, don't use the -lpthread flag
+
+ # Turn off "Image Has Safe Exception Handlers" linker option (SAFESEH error of visual studio):
+ # see the my_add_link_flags macro.
+ INCLUDE(cmake/config/AddCompileLinkFlags.cmake)
+ ENDIF ()
- ############################################################################
- #####
- #####Set the full RPATH to find libraries independently from LD_LIBRARY_PATH
- #####
- ############################################################################
- SET(CMAKE_MACOSX_RPATH TRUE)
+ MESSAGE(STATUS
+ "Compilation with scotch: ${SCOTCH_LIBRARY}")
+ SET( LIBRARIES ${SCOTCH_LINK_FLAGS} ${LIBRARIES})
+ SET( LIBRARIES ${SCOTCHERR_LIBRARY} ${LIBRARIES})
+ SET( LIBRARIES ${SCOTCH_LIBRARY} ${LIBRARIES})
+ENDIF()
- # use, i.e. don't skip the full RPATH for the build tree
- SET(CMAKE_SKIP_BUILD_RPATH FALSE)
+IF ( SCOTCH_NOTFOUND )
+ MESSAGE ( WARNING "Scotch library not found:"
+ "Using scotch reduce the execution time of mmg3d "
+ "(see https://gforge.inria.fr/frs/?group_id=248 to download it)."
+ "If you have already installed Scotch and want to use it, "
+ "please set the CMake variable or environment variable SCOTCH_DIR "
+ "to your scotch directory.")
+ENDIF ( )
- # when building, don't use the install RPATH already
- # (but later on when installing)
- SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
+############################################################################
+#####
+##### Set the full RPATH to find libraries independently from
+##### LD_LIBRARY_PATH (for MacOSX)
+#####
+############################################################################
- SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
+SET(CMAKE_MACOSX_RPATH FALSE)
- # add the automatically determined parts of the RPATH
- # which point to directories outside the build tree to the install RPATH
- SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
-
- # the RPATH to be used when installing, but only if it's not a system
- # directory
- LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
- "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
- IF("${isSystemDir}" STREQUAL "-1")
- SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
- ENDIF("${isSystemDir}" STREQUAL "-1")
-
- ############################################################################
- #####
- ##### Compile mmg3d libraries
- #####
- ############################################################################
- SET(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/lib)
-
- OPTION ( LIBMMG3D_STATIC "Compile static library" ON)
- IF ( LIBMMG3D_STATIC )
- ADD_LIBRARY(${PROJECT_NAME}3d_a STATIC
- ${MMG3D_SOURCE_DIR}/lib${PROJECT_NAME}3df.h
- ${source_files} ${lib_file} )
- SET_TARGET_PROPERTIES(${PROJECT_NAME}3d_a PROPERTIES OUTPUT_NAME
- ${PROJECT_NAME}3d)
- TARGET_LINK_LIBRARIES(${PROJECT_NAME}3d_a ${LIBRARIES})
- INSTALL(TARGETS ${PROJECT_NAME}3d_a
- ARCHIVE DESTINATION lib
- LIBRARY DESTINATION lib)
- ENDIF()
+# use, i.e. don't skip the full RPATH for the build tree
+SET(CMAKE_SKIP_BUILD_RPATH FALSE)
- # Compile shared library
- OPTION ( LIBMMG3D_SHARED "Compile dynamic library" OFF)
- IF ( LIBMMG3D_SHARED )
- ADD_LIBRARY(${PROJECT_NAME}3d_so SHARED
- ${MMG3D_SOURCE_DIR}/lib${PROJECT_NAME}3df.h
- ${source_files} ${lib_file})
- SET_TARGET_PROPERTIES(${PROJECT_NAME}3d_so PROPERTIES
- VERSION 5.0.0 SOVERSION 5)
- SET_TARGET_PROPERTIES(${PROJECT_NAME}3d_so PROPERTIES
- OUTPUT_NAME ${PROJECT_NAME}3d)
- TARGET_LINK_LIBRARIES(${PROJECT_NAME}3d_so ${LIBRARIES})
- INSTALL(TARGETS ${PROJECT_NAME}3d_so
- ARCHIVE DESTINATION
- LIBRARY DESTINATION lib)
- ENDIF()
+# when building, don't use the install RPATH already
+# (but later on when installing)
+SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
- IF ( LIBMMG3D_STATIC OR LIBMMG3D_SHARED )
- # mmg3d header files needed for library
- SET( mmg3d_headers
- ${MMG3D_SOURCE_DIR}/libmmg3d.h
- ${MMG3D_SOURCE_DIR}/libmmg3df.h
- ${COMMON_SOURCE_DIR}/mmg.h
- ${COMMON_SOURCE_DIR}/eigenv.h
- ${COMMON_SOURCE_DIR}/libmmg.h
- ${COMMON_SOURCE_DIR}/chrono.h
- )
+SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
- INSTALL(FILES ${mmg3d_headers} DESTINATION include/mmg/mmg3d)
- ENDIF()
+# add the automatically determined parts of the RPATH
+# which point to directories outside the build tree to the install RPATH
+SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
- ############################################################################
- #####
- ##### Compile program to test library
- #####
- ############################################################################
- OPTION ( TEST_LIBMMG3D "Compile tests of library" OFF)
- IF ( TEST_LIBMMG3D )
- IF ( LIBMMG3D_STATIC )
- ADD_EXECUTABLE(libmmg3d_example0_a
- ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/example0/example0_a/main.c)
- TARGET_LINK_LIBRARIES(libmmg3d_example0_a ${PROJECT_NAME}3d_a)
- INSTALL(TARGETS libmmg3d_example0_a RUNTIME DESTINATION bin )
-
- ADD_EXECUTABLE(libmmg3d_example0_b
- ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/example0/example0_b/main.c)
- TARGET_LINK_LIBRARIES(libmmg3d_example0_b ${PROJECT_NAME}3d_a)
- INSTALL(TARGETS libmmg3d_example0_b RUNTIME DESTINATION bin )
-
- ADD_EXECUTABLE(libmmg3d_example1
- ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/example1/main.c)
- TARGET_LINK_LIBRARIES(libmmg3d_example1 ${PROJECT_NAME}3d_a)
- INSTALL(TARGETS libmmg3d_example1 RUNTIME DESTINATION bin )
- ADD_EXECUTABLE(libmmg3d_example2
- ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/example2/main.c)
- TARGET_LINK_LIBRARIES(libmmg3d_example2 ${PROJECT_NAME}3d_a)
- INSTALL(TARGETS libmmg3d_example2 RUNTIME DESTINATION bin )
-
- ENABLE_LANGUAGE (Fortran)
- ADD_EXECUTABLE(libmmg3d_fortran_a
- ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/example0_fortran/example0_a/main.F90)
- TARGET_LINK_LIBRARIES(libmmg3d_fortran_a ${PROJECT_NAME}3d_a)
- INSTALL(TARGETS libmmg3d_fortran_a RUNTIME DESTINATION bin )
- ADD_EXECUTABLE(libmmg3d_fortran_b
- ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/example0_fortran/example0_b/main.F90)
- TARGET_LINK_LIBRARIES(libmmg3d_fortran_b ${PROJECT_NAME}3d_a)
- INSTALL(TARGETS libmmg3d_fortran_b RUNTIME DESTINATION bin )
-
- ADD_EXECUTABLE(libmmg3d_example3
- ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/example3/mmg3d.c)
- TARGET_LINK_LIBRARIES(libmmg3d_example3 ${PROJECT_NAME}3d_a)
- INSTALL(TARGETS libmmg3d_example3 RUNTIME DESTINATION bin )
- ELSEIF ( LIBMMG3D_SHARED )
- ADD_EXECUTABLE(libmmg3d_example0_a
- ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/example0/example0_a/main.c)
- TARGET_LINK_LIBRARIES(libmmg3d_example0_a ${PROJECT_NAME}3d_so)
- INSTALL(TARGETS libmmg3d_example0_a RUNTIME DESTINATION bin )
-
- ADD_EXECUTABLE(libmmg3d_example0_b
- ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/example0/example0_b/main.c)
- TARGET_LINK_LIBRARIES(libmmg3d_example0_b ${PROJECT_NAME}3d_so)
- INSTALL(TARGETS libmmg3d_example0_b RUNTIME DESTINATION bin )
-
- ADD_EXECUTABLE(libmmg3d_example1
- ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/example1/main.c)
- TARGET_LINK_LIBRARIES(libmmg3d_example1 ${PROJECT_NAME}3d_so)
- INSTALL(TARGETS libmmg3d_example1 RUNTIME DESTINATION bin )
- ADD_EXECUTABLE(libmmg3d_example2
- ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/example2/main.c)
- TARGET_LINK_LIBRARIES(libmmg3d_example2 ${PROJECT_NAME}3d_so)
- INSTALL(TARGETS libmmg3d_example2 RUNTIME DESTINATION bin )
-
- ADD_EXECUTABLE(libmmg3d_example3
- ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/example3/mmg3d.c)
- TARGET_LINK_LIBRARIES(libmmg3d_example3 ${PROJECT_NAME}3d_so)
- INSTALL(TARGETS libmmg3d_example3 RUNTIME DESTINATION bin )
- ELSE ()
- MESSAGE(WARNING "You must activate the compilation of the static or"
- " shared ${PROJECT_NAME} library to compile this tests." )
- ENDIF ()
- ENDIF()
+# the RPATH to be used when installing, but only if it's not a system
+# directory
+LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
+ "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
+IF("${isSystemDir}" STREQUAL "-1")
+ SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
+ENDIF("${isSystemDir}" STREQUAL "-1")
- ###############################################################################
- #####
- ##### Compile MMG3D executable
- #####
- ###############################################################################
- ADD_EXECUTABLE(${PROJECT_NAME}3d
- ${MMG3D_SOURCE_DIR}/lib${PROJECT_NAME}3df.h
- ${source_files} ${main_file})
- TARGET_LINK_LIBRARIES(${PROJECT_NAME}3d ${LIBRARIES})
- INSTALL(TARGETS ${PROJECT_NAME}3d RUNTIME DESTINATION bin)
-
- # in debug mode we name the executable mmg3d_debug
- SET_TARGET_PROPERTIES(${PROJECT_NAME}3d PROPERTIES DEBUG_POSTFIX _debug)
- # in Release mode we name the executable mmg3d_O3
- SET_TARGET_PROPERTIES(${PROJECT_NAME}3d PROPERTIES RELEASE_POSTFIX _O3)
- # in RelWithDebInfo mode we name the executable mmg3d_O3d
- SET_TARGET_PROPERTIES(${PROJECT_NAME}3d PROPERTIES RELWITHDEBINFO_POSTFIX _O3d)
- # in MinSizeRel mode we name the executable mmg3d_Os
- SET_TARGET_PROPERTIES(${PROJECT_NAME}3d PROPERTIES MINSIZEREL_POSTFIX _Os)
+###############################################################################
+#####
+##### Add dependent options
+#####
+###############################################################################
+
+#------------------------------- mmg2d
+CMAKE_DEPENDENT_OPTION ( LIBMMG2D_STATIC "Compile the mmg2d static library" ON
+ "BUILD_MMG2D" OFF)
+CMAKE_DEPENDENT_OPTION ( LIBMMG2D_SHARED "Compile the mmg2d dynamic library" OFF
+ "BUILD_MMG2D" OFF )
+IF (LIBMMG2D_STATIC OR LIBMMG2D_SHARED)
+ SET(LIBMMG2D_INTERNAL ON )
+ELSE()
+ SET(LIBMMG2D_INTERNAL OFF )
+ENDIF()
+CMAKE_DEPENDENT_OPTION (
+ TEST_LIBMMG2D "Compile tests for the mmg2d library" OFF
+ "BUILD_MMG2D;LIBMMG2D_INTERNAL" OFF
+ )
+CMAKE_DEPENDENT_OPTION(
+ MMG2D_CI "Enable/Disable continuous integration for mmg2d" ON
+ "BUILD_TESTING;BUILD_MMG2D" OFF)
+
+#------------------------------- mmgs
+CMAKE_DEPENDENT_OPTION ( LIBMMGS_STATIC "Compile the mmgs static library" ON
+ "BUILD_MMGS" OFF)
+CMAKE_DEPENDENT_OPTION ( LIBMMGS_SHARED "Compile the mmgs dynamic library" OFF
+ "BUILD_MMGS" OFF)
+IF (LIBMMGS_STATIC OR LIBMMGS_SHARED)
+ SET(LIBMMGS_INTERNAL ON )
+ELSE()
+ SET(LIBMMGS_INTERNAL OFF )
ENDIF()
+CMAKE_DEPENDENT_OPTION (
+ TEST_LIBMMGS "Compile tests for the mmgs library" OFF
+ "LIBMMGS_INTERNAL;BUILD_MMGS" OFF
+ )
+
+CMAKE_DEPENDENT_OPTION(
+ MMGS_CI "Enable/Disable continuous integration for mmgs" ON
+ "BUILD_TESTING;BUILD_MMGS" OFF )
+
+#------------------------------- mmg3d
+CMAKE_DEPENDENT_OPTION ( LIBMMG3D_STATIC "Compile the mmg3d static library" ON
+ "BUILD_MMG3D" OFF)
+CMAKE_DEPENDENT_OPTION ( LIBMMG3D_SHARED "Compile the mmg3d dynamic library" OFF
+ "BUILD_MMG3D" OFF )
+IF (LIBMMG3D_STATIC OR LIBMMG3D_SHARED)
+ SET(LIBMMG3D_INTERNAL ON )
+ELSE()
+ SET(LIBMMG3D_INTERNAL OFF )
+ENDIF()
+CMAKE_DEPENDENT_OPTION (
+ TEST_LIBMMG3D "Compile tests for the mmg3d library" OFF
+ "BUILD_MMG3D;LIBMMG3D_INTERNAL" OFF
+ )
+CMAKE_DEPENDENT_OPTION(
+ MMG3D_CI "Enable/Disable continuous integration for mmg3d" ON
+ "BUILD_TESTING;BUILD_MMG3D" OFF)
+
+CMAKE_DEPENDENT_OPTION ( PATTERN
+ "If ON, insertion by patterns, otherwise insertion by delaunay kernel"
+ OFF
+ "BUILD_MMG3D" OFF)
+#-- Remove the next line to have this option visible in basic cmake mode
+MARK_AS_ADVANCED(PATTERN)
+
+# add SUscElas library?
+SET(SUSCELAS_DIR "" CACHE PATH "Installation directory for SUscElas")
+INCLUDE(cmake/modules/FindSUscElas.cmake)
+CMAKE_DEPENDENT_OPTION (
+ USE_SUSCELAS "Use the Elas library for lagrangian motion option" ON
+ "BUILD_MMG3D;SUSCELAS_FOUND" OFF)
+
+# add Scotch library?
+SET(SCOTCH_DIR "" CACHE PATH "Installation directory for scotch")
+INCLUDE(cmake/modules/FindScotch.cmake)
+
+CMAKE_DEPENDENT_OPTION ( USE_SCOTCH "Use SCOTCH TOOL for renumbering" ON
+ "SCOTCH_FOUND;BUILD_MMGS3D" OFF)
+
+#---------------------------- mmg library gathering mmg2d, mmgs and mmg3d libs
+CMAKE_DEPENDENT_OPTION ( LIBMMG_STATIC
+ "Compile the mmg static library (mmg2d + mmgs + mmg3d)" ON
+ "BUILD_MMG" OFF)
+CMAKE_DEPENDENT_OPTION ( LIBMMG_SHARED
+ "Compile the mmg dynamic library (mmg2d + mmgs + mmg3d)" OFF
+ "BUILD_MMG" OFF )
+IF (LIBMMG_STATIC OR LIBMMG_SHARED)
+ SET(LIBMMG_INTERNAL ON )
+ELSE()
+ SET(LIBMMG_INTERNAL OFF )
+ENDIF()
+CMAKE_DEPENDENT_OPTION (
+ TEST_LIBMMG "Compile tests for the mmg library" OFF
+ "BUILD_MMG;LIBMMG_INTERNAL" OFF
+ )
+CMAKE_DEPENDENT_OPTION(
+ MMG_CI "Enable/Disable continuous integration for mmg" ON
+ "BUILD_TESTING;BUILD_MMG" OFF)
+
###############################################################################
#####
-##### Compile MMGS executable
+##### Build Targets and libmmg if needed
#####
###############################################################################
-IF ( BUILD_MMGS OR BUILD_MMG )
- ADD_EXECUTABLE(${PROJECT_NAME}s ${sourcemmgs_files} )
- TARGET_LINK_LIBRARIES(${PROJECT_NAME}s ${LIBRARIES})
- INSTALL(TARGETS ${PROJECT_NAME}s RUNTIME DESTINATION bin)
-
- # in debug mode we name the executable mmgs_debug
- SET_TARGET_PROPERTIES(${PROJECT_NAME}s PROPERTIES DEBUG_POSTFIX _debug)
- # in Release mode we name the executable mmgs_O3
- SET_TARGET_PROPERTIES(${PROJECT_NAME}s PROPERTIES RELEASE_POSTFIX _O3)
- # in RelWithDebInfo mode we name the executable mmgs_O3d
- SET_TARGET_PROPERTIES(${PROJECT_NAME}s PROPERTIES RELWITHDEBINFO_POSTFIX _O3d)
- # in MinSizeRel mode we name the executable mmgs_O3
- SET_TARGET_PROPERTIES(${PROJECT_NAME}s PROPERTIES MINSIZEREL_POSTFIX _Os)
-ENDIF()
+SET(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/lib)
+
+IF ( BUILD_MMG2D )
+ INCLUDE(cmake/modules/mmg2d.cmake)
+ENDIF ( )
+
+IF ( BUILD_MMGS )
+ INCLUDE(cmake/modules/mmgs.cmake)
+ENDIF ( )
+
+IF ( BUILD_MMG3D )
+ INCLUDE(cmake/modules/mmg3d.cmake)
+ENDIF ( )
+
+IF ( BUILD_MMG )
+ INCLUDE(cmake/modules/mmg.cmake)
+ENDIF ( )
###############################################################################
#####
##### Continuous integration
#####
###############################################################################
-IF ( BUILD_MMG3D OR BUILD_MMGS OR BUILD_MMG )
-
- OPTION ( BUILD_TESTING "Enable/Disable continuous integration" OFF )
-
- IF( BUILD_TESTING )
- OPTION(MMGS_CI "Enable/Disable continuous integration for mmgs" ON )
- OPTION(MMG3D_CI "Enable/Disable continuous integration for mmg3d" ON )
- OPTION(LONG_TESTS "Enable/Disable time consuming tests for the project" OFF )
- MARK_AS_ADVANCED(LONG_TESTS)
-
- ##-------------------------------------------------------------------##
- ##------- Get the continuous integration tests ----------------------##
- ##-------------------------------------------------------------------##
- INCLUDE(cmake/modules/LoadCiTests.cmake)
-
- ##-------------------------------------------------------------------##
- ##------- Set the continuous integration options --------------------##
- ##-------------------------------------------------------------------##
- SET(MMG_CI_TESTS ${CMAKE_SOURCE_DIR}/ci_tests/mmg )
- SET(MMGS_CI_TESTS ${CMAKE_SOURCE_DIR}/ci_tests/mmgs )
- SET(MMG3D_CI_TESTS ${CMAKE_SOURCE_DIR}/ci_tests/mmg3d )
-
- # Remove the --show-reachable=yes option from the default valgrind command
- SET(VALGRIND_COMMAND_OPTIONS "-q --tool=memcheck ")
- SET(VALGRIND_COMMAND_OPTIONS "--leak-check=yes ${VALGRIND_COMMAND_OPTIONS}")
- SET(VALGRIND_COMMAND_OPTIONS "--workaround-gcc296-bugs=yes ${VALGRIND_COMMAND_OPTIONS}")
- SET(VALGRIND_COMMAND_OPTIONS "--num-callers=100 ${VALGRIND_COMMAND_OPTIONS}")
-
- # Ignore errors coming from the libmesh library
- IF(APPLE)
- # and errors from the libSystem.B library
- SET(MEMORYCHECK_SUPPRESSIONS_FILE
- "${CMAKE_SOURCE_DIR}/cmake/Supp/libSystem.supp")
- ENDIF(APPLE)
- # Copy config file and custom file in the good directories
- CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/cmake/config/CTestConfig.cmake
- ${CMAKE_SOURCE_DIR}/CTestConfig.cmake)
- CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/cmake/config/CTestCustom.cmake
- ./CTestCustom.cmake)
-
- # Max time for test case
- SET(DART_TESTING_TIMEOUT 2500 FORCE)
-
- ENABLE_TESTING()
- INCLUDE(CTest)
-
- IF ( NOT APPLE)
- # Add coverage flags
- SET(CMAKE_C_FLAGS_DEBUG " -fprofile-arcs ${CMAKE_C_FLAGS_DEBUG}")
- SET(CMAKE_C_FLAGS_DEBUG " -ftest-coverage ${CMAKE_C_FLAGS_DEBUG}")
- SET(CMAKE_C_FLAGS_DEBUG " --coverage ${CMAKE_C_FLAGS_DEBUG}")
- SET(CMAKE_EXE_LINKER_FLAGS_DEBUG " -fprofile-arcs ${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
- SET(CMAKE_EXE_LINKER_FLAGS_DEBUG " -ftest-coverage ${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
- SET(CMAKE_EXE_LINKER_FLAGS_DEBUG " --coverage ${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
+
+OPTION ( BUILD_TESTING "Enable/Disable continuous integration" OFF )
+
+CMAKE_DEPENDENT_OPTION (
+ LONG_TESTS "Enable/Disable time consuming tests for the project" OFF
+ "BUILD_TESTING" OFF )
+MARK_AS_ADVANCED(LONG_TESTS)
+
+CMAKE_DEPENDENT_OPTION ( COVERAGE "Watch code coverage (Linux only)" OFF
+"BUILD_TESTING;CMAKE_COMPILER_IS_GNUCC" OFF )
+
+IF( BUILD_TESTING )
+
+ ##-------------------------------------------------------------------##
+ ##------- Get the continuous integration tests ----------------------##
+ ##-------------------------------------------------------------------##
+ INCLUDE(cmake/modules/LoadCiTests.cmake)
+
+ ##-------------------------------------------------------------------##
+ ##------- Set the continuous integration options --------------------##
+ ##-------------------------------------------------------------------##
+ SET(MMG_CI_TESTS ${CMAKE_SOURCE_DIR}/ci_tests/mmg )
+
+ # Remove the --show-reachable=yes option from the default valgrind command
+ SET(VALGRIND_COMMAND_OPTIONS "-q --tool=memcheck ")
+ SET(VALGRIND_COMMAND_OPTIONS "--leak-check=yes ${VALGRIND_COMMAND_OPTIONS}")
+ SET(VALGRIND_COMMAND_OPTIONS "--workaround-gcc296-bugs=yes ${VALGRIND_COMMAND_OPTIONS}")
+ SET(VALGRIND_COMMAND_OPTIONS "--num-callers=100 ${VALGRIND_COMMAND_OPTIONS}")
+
+ # Ignore errors coming from the libmesh library
+ IF(APPLE)
+ # and errors from the libSystem.B library
+ SET(MEMORYCHECK_SUPPRESSIONS_FILE
+ "${CMAKE_SOURCE_DIR}/cmake/Supp/libSystem.supp")
+ ENDIF(APPLE)
+ # Copy config file and custom file in the good directories
+ CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/cmake/config/CTestConfig.cmake
+ ${CMAKE_SOURCE_DIR}/CTestConfig.cmake)
+ CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/cmake/config/CTestCustom.cmake
+ ./CTestCustom.cmake)
+
+ # Max time for test case
+ SET(DART_TESTING_TIMEOUT 2500 FORCE)
+
+ ENABLE_TESTING()
+ INCLUDE(CTest)
+
+ IF ( COVERAGE )
+ # Add coverage flags
+ SET(CMAKE_C_FLAGS_DEBUG " -fprofile-arcs ${CMAKE_C_FLAGS_DEBUG}")
+ SET(CMAKE_C_FLAGS_DEBUG " -ftest-coverage ${CMAKE_C_FLAGS_DEBUG}")
+ SET(CMAKE_C_FLAGS_DEBUG " --coverage ${CMAKE_C_FLAGS_DEBUG}")
+ SET(CMAKE_EXE_LINKER_FLAGS_DEBUG " -fprofile-arcs ${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
+ SET(CMAKE_EXE_LINKER_FLAGS_DEBUG " -ftest-coverage ${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
+ SET(CMAKE_EXE_LINKER_FLAGS_DEBUG " --coverage ${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
+ ENDIF()
+
+ IF ( CMAKE_COMPILER_IS_GNUCC )
+ SET(CMAKE_C_FLAGS_DEBUG "-g -Wall ${CMAKE_C_FLAGS_DEBUG}")
+ SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "-g ${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
+ ELSEIF( CMAKE_COMPILER_IS_CLANG )
+ SET(CMAKE_C_FLAGS_DEBUG "-g -Weverything -Wno-sign-conversion")
+ SET(${CMAKE_C_FLAGS_DEBUG} "-Wno-char-subscripts -Wno-padded "
+ ${CMAKE_C_FLAGS_DEBUG})
+ SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "-g ${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
+ ENDIF ( )
+
+ IF ( MMG3D_CI OR MMGS_CI )
+ SET(LISTEXEC_MMG ${LISTEXEC_MMGS} ${LISTEXEC_MMG3D})
+ SET(EXECUT_MMG ${EXECUT_MMGS} ${EXECUT_MMG3D})
+
+ # Change authorisations for some files...
+ IF ( EXISTS ${MMG_CI_TESTS}/LeakCheck_AbnormalEnd7/unreadable.meshb)
+ FILE(REMOVE ${MMG_CI_TESTS}/LeakCheck_AbnormalEnd7/unwrittable.meshb)
ENDIF()
+ FILE(COPY ${MMG_CI_TESTS}/LeakCheck_AbnormalEnd7/dout.mesh
+ DESTINATION ${MMG_CI_TESTS}/LeakCheck_AbnormalEnd7/unwrittable.meshb)
- IF ( CMAKE_COMPILER_IS_GNUCC )
- SET(CMAKE_C_FLAGS_DEBUG "-g -Wall ${CMAKE_C_FLAGS_DEBUG}")
- SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "-g ${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
- ELSEIF( CMAKE_COMPILER_IS_CLANG )
- SET(CMAKE_C_FLAGS_DEBUG "-g -Weverything -Wno-sign-conversion")
- SET(${CMAKE_C_FLAGS_DEBUG} "-Wno-char-subscripts -Wno-padded "
- ${CMAKE_C_FLAGS_DEBUG})
- SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "-g ${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
- ENDIF ( )
-
- ##-------------------------------------------------------------------##
- ##--------------------------- Add tests and configure it ------------##
- ##-------------------------------------------------------------------##
-
- # Add runtime that we want to test for mmgs
- IF( MMGS_CI )
- IF(${CMAKE_BUILD_TYPE} MATCHES "Debug")
- SET(EXECUT_MMGS ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}s_debug)
- SET(BUILDNAME ${BUILDNAME}_debug CACHE STRING "build name variable")
- ELSEIF(${CMAKE_BUILD_TYPE} MATCHES "Release")
- SET(EXECUT_MMGS ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}s_O3)
- SET(BUILDNAME ${BUILDNAME}_O3 CACHE STRING "build name variable")
- ELSEIF(${CMAKE_BUILD_TYPE} MATCHES "RelWithDebInfo")
- SET(EXECUT_MMGS ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}s_O3d)
- SET(BUILDNAME ${BUILDNAME}_O3d CACHE STRING "build name variable")
- ELSEIF(${CMAKE_BUILD_TYPE} MATCHES "MinSizeRel")
- SET(EXECUT_MMGS ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}s_Os)
- SET(BUILDNAME ${BUILDNAME}_Os CACHE STRING "build name variable")
- ELSE()
- SET(EXECUT_MMGS ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}s)
- SET(BUILDNAME ${BUILDNAME} CACHE STRING "build name variable")
- ENDIF()
-
- SET ( LISTEXEC_MMGS ${EXECUT_MMGS} )
-
- # Add mmgs tests
- INCLUDE( ${CMAKE_SOURCE_DIR}/cmake/testing/mmgs_tests.cmake )
+ IF ( EXISTS ${MMG_CI_TESTS}/LeakCheck_AbnormalEnd8/unwrittable.sol)
+ FILE(REMOVE ${MMG_CI_TESTS}/LeakCheck_AbnormalEnd8/unwrittable.sol)
ENDIF()
+ FILE(COPY ${MMG_CI_TESTS}/LeakCheck_AbnormalEnd8/dsol.sol
+ DESTINATION ${MMG_CI_TESTS}/LeakCheck_AbnormalEnd8/unwrittable.sol)
+
+ # Add common tests for mmgs/3d appli
+ INCLUDE( ${CMAKE_SOURCE_DIR}/cmake/testing/mmg_tests.cmake )
- # Add runtime that we want to test for mmg3d
- IF ( MMG3D_CI )
-
- IF ( LONG_TESTS )
- # Run some tests twice with the output of the previous test as input
- OPTION ( RUN_AGAIN "Enable/Disable second run of some tests" ON )
- MARK_AS_ADVANCED(RUN_AGAIN)
- ELSE ( )
- SET ( RUN_AGAIN OFF )
- ENDIF ( )
-
- IF(${CMAKE_BUILD_TYPE} MATCHES "Debug")
- SET(EXECUT_MMG3D ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}3d_debug)
- SET(BUILDNAME ${BUILDNAME}_debug CACHE STRING "build name variable")
- ELSEIF(${CMAKE_BUILD_TYPE} MATCHES "Release")
- SET(EXECUT_MMG3D ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}3d_O3)
- SET(BUILDNAME ${BUILDNAME}_O3 CACHE STRING "build name variable")
- ELSEIF(${CMAKE_BUILD_TYPE} MATCHES "RelWithDebInfo")
- SET(EXECUT_MMG3D ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}3d_O3d)
- SET(BUILDNAME ${BUILDNAME}_O3d CACHE STRING "build name variable")
- ELSEIF(${CMAKE_BUILD_TYPE} MATCHES "MinSizeRel")
- SET(EXECUT_MMG3D ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}3d_Os)
- SET(BUILDNAME ${BUILDNAME}_Os CACHE STRING "build name variable")
- ELSE()
- SET(EXECUT_MMG3D ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}3d)
- SET(BUILDNAME ${BUILDNAME} CACHE STRING "build name variable")
- ENDIF()
-
- SET ( LISTEXEC_MMG3D ${EXECUT_MMG3D} )
- IF ( TEST_LIBMMG3D )
- IF ( LIBMMG3D_STATIC OR LIBMMG3D_SHARED )
- SET(LIBMMG3D_EXEC0_a ${EXECUTABLE_OUTPUT_PATH}/libmmg3d_example0_a)
- SET(LIBMMG3D_EXEC0_b ${EXECUTABLE_OUTPUT_PATH}/libmmg3d_example0_b)
- SET(LIBMMG3D_EXECFORTRAN_a ${EXECUTABLE_OUTPUT_PATH}/libmmg3d_fortran_a)
- SET(LIBMMG3D_EXECFORTRAN_b ${EXECUTABLE_OUTPUT_PATH}/libmmg3d_fortran_b)
- SET(LIBMMG3D_EXEC1 ${EXECUTABLE_OUTPUT_PATH}/libmmg3d_example1)
- SET(LIBMMG3D_EXEC2 ${EXECUTABLE_OUTPUT_PATH}/libmmg3d_example2)
-
- ADD_TEST(NAME libmmg3d_example0_a COMMAND ${LIBMMG3D_EXEC0_a})
- ADD_TEST(NAME libmmg3d_example0_b COMMAND ${LIBMMG3D_EXEC0_b})
- ADD_TEST(NAME libmmg3d_fortran_a COMMAND ${LIBMMG3D_EXECFORTRAN_a})
- ADD_TEST(NAME libmmg3d_fortran_b COMMAND ${LIBMMG3D_EXECFORTRAN_b})
- ADD_TEST(NAME libmmg3d_example1 COMMAND ${LIBMMG3D_EXEC1})
- ADD_TEST(NAME libmmg3d_example2 COMMAND ${LIBMMG3D_EXEC2})
-
- SET(LIBMMG3D_EXEC3 ${EXECUTABLE_OUTPUT_PATH}/libmmg3d_example3)
- SET( LISTEXEC_MMG3D ${LISTEXEC_MMG3D} ${LIBMMG3D_EXEC3} )
- ENDIF()
- ENDIF()
-
- # Add more tests
- INCLUDE( ${CMAKE_SOURCE_DIR}/cmake/testing/mmg3d_tests.cmake )
-
- IF ( RUN_AGAIN )
- INCLUDE( ${CMAKE_SOURCE_DIR}/cmake/testing/mmg3d_rerun_tests.cmake )
- ENDIF()
-
- ENDIF ( MMG3D_CI )
-
- IF ( MMG3D_CI OR MMGS_CI )
- SET(LISTEXEC_MMG ${LISTEXEC_MMGS} ${LISTEXEC_MMG3D})
- SET(EXECUT_MMG ${EXECUT_MMGS} ${EXECUT_MMG3D})
-
- # Change authorisations for some files...
- IF ( EXISTS ${MMG_CI_TESTS}/LeakCheck_AbnormalEnd7/unreadable.meshb)
- FILE(REMOVE ${MMG_CI_TESTS}/LeakCheck_AbnormalEnd7/unwrittable.meshb)
- ENDIF()
- FILE(COPY ${MMG_CI_TESTS}/LeakCheck_AbnormalEnd7/dout.mesh
- DESTINATION ${MMG_CI_TESTS}/LeakCheck_AbnormalEnd7/unwrittable.meshb)
-
- IF ( EXISTS ${MMG_CI_TESTS}/LeakCheck_AbnormalEnd8/unwrittable.sol)
- FILE(REMOVE ${MMG_CI_TESTS}/LeakCheck_AbnormalEnd8/unwrittable.sol)
- ENDIF()
- FILE(COPY ${MMG_CI_TESTS}/LeakCheck_AbnormalEnd8/dsol.sol
- DESTINATION ${MMG_CI_TESTS}/LeakCheck_AbnormalEnd8/unwrittable.sol)
-
- # Add common tests for mmgs/3d appli
- INCLUDE( ${CMAKE_SOURCE_DIR}/cmake/testing/mmg_tests.cmake )
-
- ENDIF(MMG3D_CI OR MMGS_CI)
-
- ENDIF ( BUILD_TESTING )
-
-ENDIF ( BUILD_MMG3D OR BUILD_MMGS OR BUILD_MMG )
+ ENDIF(MMG3D_CI OR MMGS_CI)
+
+ENDIF ( BUILD_TESTING )
###############################################################################
#####
@@ -641,6 +497,23 @@ ENDIF ( BUILD_MMG3D OR BUILD_MMGS OR BUILD_MMG )
###############################################################################
FIND_PACKAGE(Doxygen)
IF(DOXYGEN_FOUND)
+
+ # MMG2D Documentation
+ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen/mmg2d/Doxyfile.in
+ ${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen/mmg2d/Doxyfile @ONLY)
+
+ ADD_CUSTOM_TARGET(mmg2d_doc
+ COMMAND ${DOXYGEN_EXECUTABLE}
+ ${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen/mmg2d/Doxyfile
+ # COMMAND ${CMAKE_COMMAND} -E chdir
+ # ${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen/mmg2d/latex make
+ # COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen/mmg2d/latex/refman.pdf
+ # ${CMAKE_CURRENT_SOURCE_DIR}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen/mmg2d
+ COMMENT "Generating MMG2D API documentation with Doxygen.
+ Open up the doc/doxygen/mmg2d/html/index.html file to see it." VERBATIM
+ )
+
# MMGS Documentation
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen/mmgs/Doxyfile.in
${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen/mmgs/Doxyfile @ONLY)
@@ -655,6 +528,7 @@ IF(DOXYGEN_FOUND)
COMMENT "Generating MMGS API documentation with Doxygen.
Open up the doc/doxygen/mmgs/html/index.html file to see it." VERBATIM
)
+
# MMG3D Documentation
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen/mmg3d/Doxyfile.in
${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen/mmg3d/Doxyfile @ONLY)
@@ -669,17 +543,13 @@ IF(DOXYGEN_FOUND)
COMMENT "Generating MMG3D API documentation with Doxygen.
Open up the doc/doxygen/mmg3d/html/index.html file to see it" VERBATIM
)
- # MMGS and MMG3D Documentation
+
ADD_CUSTOM_TARGET(doc
- DEPENDS mmgs_doc mmg3d_doc
- COMMENT "Generating MMGS and MMG3D API documentation with Doxygen.
- To see the MMGS documentation,"
- " open up the doc/doxygen/mmgs/html/index.html file.
- To see the MMG3D documentation,"
- " open up the doc/doxygen/mmg3d/html/index.html file."
- VERBATIM
+ DEPENDS mmgs_doc mmg3d_doc mmg2d_doc
+ COMMENT "Generating MMG API documentation with Doxygen.
+ Open up the doc/doxygen/mmg*/html/index.html file to see it" VERBATIM
)
-ENDIF(DOXYGEN_FOUND)
+ENDIF ( DOXYGEN_FOUND )
###############################################################################
#####
@@ -692,11 +562,10 @@ SET( CPACK_GENERATOR TGZ )
SET(CPACK_PACKAGE_NAME ${PROJECT_NAME})
SET(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 1)
-SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MMG3D/MMGS: ISOTROPIC TETRAHEDRAL"
- " REMESHER/SURFACE REMESHER")
+SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MMG: 2d, surface and 3d remeshers")
SET(CPACK_PACKAGE_VENDOR "Cécile Dobrzynski, Pascal Frey, Charles Dapogny,"
" Algiane Froehly")
-SET(CPACK_PACKAGE_CONTACT "cecile.dobrzynski@inria.fr")
+SET(CPACK_PACKAGE_CONTACT "contact@mmgtools.org")
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
SET(CPACK_PACKAGE_VERSION ${CMAKE_RELEASE_VERSION})
@@ -708,56 +577,51 @@ SET(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_INSTALL_DIRECTORY}-${CMAKE_SYSTEM})
SET(CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME}")
SET(CPACK_OUTPUT_FILE_PREFIX "../archives")
-SET(CPACK_IGNORE_FILES ";.\\\\\\\\.#;/\\\\\\\\.git;.~;.#;.-e;.DS_Store"
- ${CPACK_IGNORE_FILES})
-SET(CPACK_IGNORE_FILES ";libmmg3d.*" ${CPACK_IGNORE_FILES})
-SET(CPACK_IGNORE_FILES ";libmmgs.*" ${CPACK_IGNORE_FILES})
-
-SET(CPACK_SOURCE_IGNORE_FILES ";src/mmg3d/mmg3d.h$" ${CPACK_SOURCE_IGNORE_FILE})
-SET(CPACK_SOURCE_IGNORE_FILES ";.\\\\\\\\.#;/\\\\\\\\.git;.~;.#;.-e;.DS_Store"
- ${CPACK_SOURCE_IGNORE_FILES})
-SET(CPACK_SOURCE_IGNORE_FILES ";lib/;bin;archives;def"
- ${CPACK_SOURCE_IGNORE_FILES})
-SET(CPACK_SOURCE_IGNORE_FILES ";.dir-locals.el;.tm_properties"
- ${CPACK_SOURCE_IGNORE_FILES})
-SET(CPACK_SOURCE_IGNORE_FILES ";libexamples/mmg3d/example0/example0_a/mesh.o.*"
- ${CPACK_SOURCE_IGNORE_FILES})
-SET(CPACK_SOURCE_IGNORE_FILES ";libexamples/mmg3d/example0/example0_b/mesh.o.*"
- ${CPACK_SOURCE_IGNORE_FILES})
-SET(CPACK_SOURCE_IGNORE_FILES ";libexamples/mmg3d/example1/result0.*"
- ${CPACK_SOURCE_IGNORE_FILES})
-SET(CPACK_SOURCE_IGNORE_FILES ";libexamples/mmg3d/example2/result1.*"
- ${CPACK_SOURCE_IGNORE_FILES})
-SET(CPACK_SOURCE_IGNORE_FILES ";libexamples/mmg3d/example3/SphereIso.*"
- ${CPACK_SOURCE_IGNORE_FILES})
-SET(CPACK_SOURCE_IGNORE_FILES ";CMakeFiles" ${CPACK_SOURCE_IGNORE_FILES})
-SET(CPACK_SOURCE_IGNORE_FILES ";cmake/supp/libSystem.supp"
- ${CPACK_SOURCE_IGNORE_FILES})
-SET(CPACK_SOURCE_IGNORE_FILES ";CTestConfig.cmake" ${CPACK_SOURCE_IGNORE_FILES})
-SET(CPACK_SOURCE_IGNORE_FILES ";cmake/testing/testing.cmake"
- ${CPACK_SOURCE_IGNORE_FILES})
-SET(CPACK_SOURCE_IGNORE_FILES ";.#$" ${CPACK_SOURCE_IGNORE_FILES})
-SET(CPACK_SOURCE_IGNORE_FILES ";build*" ${CPACK_SOURCE_IGNORE_FILES} )
-SET(CPACK_SOURCE_IGNORE_FILES ";doc/doxygen/.*/html;doc/doxygen/.*/Doxyfile$"
- ${CPACK_SOURCE_IGNORE_FILES} )
-
-IF ( (WIN32 OR WIN64) AND (NOT UNIX) )
-# # Warning compilation under windows not tested
-# #SET(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/logo.pdf")
-# SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\${PROJECT_NAME}.exe")
-# SET(CPACK_NSIS_DISPLAY_NAME
-# "${CPACK_PACKAGE_INSTALL_DIRECTORY} mmg: surface and volume remeshers")
-# SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\www.mmgtools.org")
-# SET(CPACK_NSIS_URL_INFO_ABOUT
-# "http:\\\\\\\\www.math.u-bordeaux1.fr/~dobrzyns/.../mmg3d.php")
-# SET(CPACK_NSIS_CONTACT ${CPACK_PACKAGE_CONTACT})
-# SET(CPACK_NSIS_MODIFY_PATH ON) # Choice to add prog dir to the system PATH
-# SET(CPACK_PACKAGING_INSTALL_PREFIX "${PROJECT_NAME}" CACHE PATH
-# "Where you want to install your package")
-# MARK_AS_ADVANCED(CPACK_PACKAGING_INSTALL_PREFIX)
-#ELSEIF (APPLE )
-# SET(CPACK_BINARY_OSX11 "ON")
-#ELSEIF ( UNIX )
-ENDIF ( (WIN32 OR WIN64) AND (NOT UNIX) )
+#SET(CPACK_SOURCE_IGNORE_FILES ";src/common/mmgcommon.h$" ${CPACK_SOURCE_IGNORE_FILE})
+#SET(CPACK_SOURCE_IGNORE_FILES ";.\\\\\\\\.#;/\\\\\\\\.git;.~;.#;.-e;.DS_Store"
+# ${CPACK_SOURCE_IGNORE_FILES})
+#SET(CPACK_SOURCE_IGNORE_FILES ";lib/;bin;archives;def"
+# ${CPACK_SOURCE_IGNORE_FILES})
+#SET(CPACK_SOURCE_IGNORE_FILES ";.dir-locals.el;.tm_properties"
+# ${CPACK_SOURCE_IGNORE_FILES})
+#SET(CPACK_SOURCE_IGNORE_FILES ";libexamples/mmg3d/example0/example0_a/mesh.o.*"
+# ${CPACK_SOURCE_IGNORE_FILES})
+#SET(CPACK_SOURCE_IGNORE_FILES ";libexamples/mmg3d/example0/example0_b/mesh.o.*"
+# ${CPACK_SOURCE_IGNORE_FILES})
+#SET(CPACK_SOURCE_IGNORE_FILES ";libexamples/mmg3d/example1/result0.*"
+# ${CPACK_SOURCE_IGNORE_FILES})
+#SET(CPACK_SOURCE_IGNORE_FILES ";libexamples/mmg3d/example2/result1.*"
+# ${CPACK_SOURCE_IGNORE_FILES})
+#SET(CPACK_SOURCE_IGNORE_FILES ";libexamples/mmg3d/example3/SphereIso.*"
+# ${CPACK_SOURCE_IGNORE_FILES})
+#SET(CPACK_SOURCE_IGNORE_FILES ";CMakeFiles" ${CPACK_SOURCE_IGNORE_FILES})
+#SET(CPACK_SOURCE_IGNORE_FILES ";cmake/supp/libSystem.supp"
+# ${CPACK_SOURCE_IGNORE_FILES})
+#SET(CPACK_SOURCE_IGNORE_FILES ";CTestConfig.cmake" ${CPACK_SOURCE_IGNORE_FILES})
+#SET(CPACK_SOURCE_IGNORE_FILES ";cmake/testing/testing.cmake"
+# ${CPACK_SOURCE_IGNORE_FILES})
+#SET(CPACK_SOURCE_IGNORE_FILES ";.#$" ${CPACK_SOURCE_IGNORE_FILES})
+#SET(CPACK_SOURCE_IGNORE_FILES ";build*" ${CPACK_SOURCE_IGNORE_FILES} )
+#SET(CPACK_SOURCE_IGNORE_FILES ";doc/doxygen/.*/html;doc/doxygen/.*/Doxyfile$"
+# ${CPACK_SOURCE_IGNORE_FILES} )
+
+#IF ( WIN32 AND (NOT UNIX) )
+# # # Warning compilation under windows not tested
+# # #SET(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/logo.pdf")
+# # SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\${PROJECT_NAME}.exe")
+# # SET(CPACK_NSIS_DISPLAY_NAME
+# # "${CPACK_PACKAGE_INSTALL_DIRECTORY} mmg: surface and volume remeshers")
+# # SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\www.mmgtools.org")
+# # SET(CPACK_NSIS_URL_INFO_ABOUT
+# # "http:\\\\\\\\www.math.u-bordeaux1.fr/~dobrzyns/.../mmg3d.php")
+# # SET(CPACK_NSIS_CONTACT ${CPACK_PACKAGE_CONTACT})
+# # SET(CPACK_NSIS_MODIFY_PATH ON) # Choice to add prog dir to the system PATH
+# # SET(CPACK_PACKAGING_INSTALL_PREFIX "${PROJECT_NAME}" CACHE PATH
+# # "Where you want to install your package")
+# # MARK_AS_ADVANCED(CPACK_PACKAGING_INSTALL_PREFIX)
+# #ELSEIF (APPLE )
+# # SET(CPACK_BINARY_OSX11 "ON")
+# #ELSEIF ( UNIX )
+#ENDIF ( WIN32 AND (NOT UNIX) )
INCLUDE(CPack)
diff --git a/LICENSE b/LICENSE
index 9a6d47f10..fdc83b561 100644
--- a/LICENSE
+++ b/LICENSE
@@ -2,7 +2,7 @@ mmg Copyright / License Information
======================================
This file is part of the mmg software package for the tetrahedral mesh modification.
-Copyright (c) Inria - IMB (Université de Bordeaux) - LJLL (UPMC), 2004- .
+Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- .
mmg is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
diff --git a/README.md b/README.md
index e2b036724..1ee761d28 100644
--- a/README.md
+++ b/README.md
@@ -1,24 +1,31 @@
# mmg - Surface and volume remeshers
-mmg is an open source software for surface and volume remeshing.
+mmg is an open source software for bidimensional and tridimensional surface and volume remeshing.
-It provides two applications:
- * **mmgs**: adaptation and optimization of a surface triangulation representing a piecewise linear approximation of an underlying surface geometry;
- * **mmg3d**: adaptation and optimization of a tetrahedral mesh and implicit domain meshing.
+It provides 3 applications and 4 libraries:
+ * the **mmg2d** application and library: adaptation and optimization of a bidimensionnal triangulation;
+ * the **mmgs** application and library: adaptation and optimization of a surface triangulation representing a piecewise linear approximation of an underlying surface geometry;
+ * the **mmg3d** application and library: adaptation and optimization of a tetrahedral mesh and implicit domain meshing;
+ * the **mmg** library gathering the **mmg2d**, **mmgs** and **mmg3d** libraries.
[//]: # ( comment )
## Get and compile the mmg project
1. Get the repository:
+ ```Shell
+ wget https://github.com/MmgTools/mmg/archive/master.zip
+ ```
+ or
```Shell
git clone https://github.com/MmgTools/mmg.git
```
The project sources are available under the **_src/_** directory, see:
+ * **_src/mmg2d/_** for files related to the mmg2d application;
* **_src/mmgs/_** for files related to the mmgs application;
* **_src/mmg3d/_** for files related to the mmg3d application;
* **_src/common/_** for files related to the both.
- 2. Fast compilation (build both **mmgs**, **mmg3d** and the mmg3d static library **libmmg3d.a**):
+ 2. Fast compilation (build both **mmg2d**, **mmgs**, **mmg3d**, the mmg2d static library (**libmmg3d.a**), the mmgs static library (**libmmgs.a**), the mmg3d static library (**libmmg3d.a**) and the mmg static library (**libmmg.a**)):
```Shell
cd mmg
mkdir build
@@ -30,14 +37,24 @@ It provides two applications:
If the `make install` command fail, try to run the `sudo make install` command.
If you don't have root access, please refers to the [Installation] section(https://github.com/MmgTools/Mmg/wiki/Setup-guide#iii-installation) of the [setup guide](https://github.com/MmgTools/Mmg/wiki/Setup-guide#setup-guide).
- The **mmgs** and **mmg3d** applications are available under the `mmgs_O3` and `mmg3d_O3` commands.
+ The **mmg2d**, **mmgs** and **mmg3d** applications are available under the `mmg2d_O3`, `mmgs_O3` and `mmg3d_O3` commands.
## Documentation
-### Wiki
+### Project's web page
+Project's actualities and software tutorials can be found on the [mmgtools](http://www.mmgtools.org) web page.
+
+### GitHub's Wiki
More detailed informations about the compilation and configuration of the mmg's applications are available on the project [wiki](https://github.com/MmgTools/mmg/wiki).
+### Man-pages
+Man pages are available inside the **_doc/man_** directory:
+ * To see the **mmg2d** man page, just tap `man ./doc/man/mmg2d.1.gz`
+ * To see the **mmgs** man page, just tap `man ./doc/man/mmgs.1.gz`
+ * To see the **mmg3d** man page, just tap `man ./doc/man/mmg3d.1.gz`
+
### Code documentation
Run the `make doc` command to build the Doxygen documentation.
+ * To see the **mmg2d** documentation, open up the **_mmg/doc/mmg2d/html/index.html_** file;
* To see the **mmgs** documentation, open up the **_mmg/doc/mmgs/html/index.html_** file;
* To see the **mmg3d** documentation, open up the **_mmg/doc/mmg3d/html/index.html_** file.
@@ -59,7 +76,7 @@ Contact: contact@mmgtools.org
## License and copyright
Code is under the [terms of the GNU Lesser General Public License](https://raw.githubusercontent.com/MmgTools/mmg/master/LICENSE).
-Copyright © Inria - IMB (Université de Bordeaux) - LJLL (UPMC), 2004- .
+Copyright © Bx INP/Inria/UBordeaux/UPMC, 2004- .
## Reference
[Three-dimensional adaptive domain remeshing, implicit domain meshing, and applications to free and moving boundary problems - _C. Dapogny, C. Dobrzynski and P. Frey_ - April 1, 2014 - _JCP_](http://www.sciencedirect.com/science/article/pii/S0021999114000266)
\ No newline at end of file
diff --git a/cmake/config/AddCompileLinkFlags.cmake b/cmake/config/AddCompileLinkFlags.cmake
new file mode 100644
index 000000000..a6daeef6b
--- /dev/null
+++ b/cmake/config/AddCompileLinkFlags.cmake
@@ -0,0 +1,56 @@
+## =============================================================================
+## This file is part of the mmg software package for the tetrahedral
+## mesh modification.
+##** Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- .
+##
+## mmg is free software: you can redistribute it and/or modify it
+## under the terms of the GNU Lesser General Public License as published
+## by the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## mmg is distributed in the hope that it will be useful, but WITHOUT
+## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+## FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+## License for more details.
+##
+## You should have received a copy of the GNU Lesser General Public
+## License and of the GNU General Public License along with mmg (in
+## files COPYING.LESSER and COPYING). If not, see
+## . Please read their terms carefully and
+## use this copy of the mmg distribution only if you accept them.
+## =============================================================================
+
+############################################################################################################
+# AddCompileLinkFlags.cmake
+# (copy from http://binglongx.com/2013/06/30/add-arbitrary-compilelink-flags-in-cmake/)
+############################################################################################################
+
+############################################################################################################
+# Append str to a string property of a target.
+# target: string: target name.
+# property: name of target’s property. e.g: COMPILE_FLAGS, or LINK_FLAGS
+# str: string: string to be appended to the property
+macro(my_append_target_property target property str)
+ get_target_property(current_property ${target} ${property})
+ if(NOT current_property) # property non-existent or empty
+ set_target_properties(${target} PROPERTIES ${property} ${str})
+ else()
+ set_target_properties(${target} PROPERTIES ${property} "${current_property} ${str}")
+ endif()
+endmacro(my_append_target_property)
+
+############################################################################################################
+# Add/append compile flags to a target.
+# target: string: target name.
+# flags : string: compile flags to be appended
+macro(my_add_compile_flags target flags)
+ my_append_target_property(${target} COMPILE_FLAGS ${flags})
+endmacro(my_add_compile_flags)
+
+############################################################################################################
+# Add/append link flags to a target.
+# target: string: target name.
+# flags : string: link flags to be appended
+macro(my_add_link_flags target flags)
+ my_append_target_property(${target} LINK_FLAGS ${flags})
+endmacro(my_add_link_flags)
diff --git a/cmake/config/CTestConfig.cmake b/cmake/config/CTestConfig.cmake
index 79e837577..d9083ccf0 100644
--- a/cmake/config/CTestConfig.cmake
+++ b/cmake/config/CTestConfig.cmake
@@ -1,7 +1,7 @@
## =============================================================================
## This file is part of the mmg software package for the tetrahedral
## mesh modification.
-## Copyright (c) Inria - IMB (Université de Bordeaux) - LJLL (UPMC), 2004- .
+##** Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- .
##
## mmg is free software: you can redistribute it and/or modify it
## under the terms of the GNU Lesser General Public License as published
diff --git a/cmake/config/CTestCustom.cmake b/cmake/config/CTestCustom.cmake
index 2c67f7115..7e798da6a 100644
--- a/cmake/config/CTestCustom.cmake
+++ b/cmake/config/CTestCustom.cmake
@@ -1,7 +1,7 @@
## =============================================================================
## This file is part of the mmg software package for the tetrahedral
## mesh modification.
-## Copyright (c) Inria - IMB (Université de Bordeaux) - LJLL (UPMC), 2004- .
+##** Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- .
##
## mmg is free software: you can redistribute it and/or modify it
## under the terms of the GNU Lesser General Public License as published
diff --git a/cmake/modules/FindSUscElas.cmake b/cmake/modules/FindSUscElas.cmake
new file mode 100644
index 000000000..d3aca894a
--- /dev/null
+++ b/cmake/modules/FindSUscElas.cmake
@@ -0,0 +1,55 @@
+## =============================================================================
+## This file is part of the mmg software package for the tetrahedral
+## mesh modification.
+##** Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- .
+##
+## mmg is free software: you can redistribute it and/or modify it
+## under the terms of the GNU Lesser General Public License as published
+## by the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## mmg is distributed in the hope that it will be useful, but WITHOUT
+## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+## FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+## License for more details.
+##
+## You should have received a copy of the GNU Lesser General Public
+## License and of the GNU General Public License along with mmg (in
+## files COPYING.LESSER and COPYING). If not, see
+## . Please read their terms carefully and
+## use this copy of the mmg distribution only if you accept them.
+## =============================================================================
+
+IF ((NOT WIN32) AND (NOT WIN64))
+ SET ( SUSCELAS_INCLUDE_DIR SUSCELAS_INCLUDE_DIR-NOTFOUND )
+ SET ( SUSCELAS_LIBRARY SUSCELAS_LIBRARY-NOTFOUND )
+ENDIF()
+
+FIND_PATH(SUSCELAS_INCLUDE_DIR
+ NAMES elastic.h
+ HINTS ${SUSCELAS_INCLUDE_DIR}
+ $ENV{SUSCELAS_INCLUDE_DIR}
+ $ENV{HOME}/include/SUscElas
+ ${SUSCELAS_DIR}/include/SUscElas
+ $ENV{SUSCELAS_DIR}/include/SUscElas
+ PATH_SUFFIXES SUscElas
+ DOC "Directory of SUscElas Header")
+
+# Check for elas library (search in common locations in order to prevent
+# modifications in SUscElas installation)
+FIND_LIBRARY(SUSCELAS_LIBRARY
+ NAMES Elas Elas${SUSCELAS_LIB_SUFFIX}
+ HINTS ${SUSCELAS_LIBRARY}
+ $ENV{SUSCELAS_LIBRARY}
+ $ENV{HOME}/lib
+ ${SUSCELAS_DIR}/lib
+ $ENV{SUSCELAS_DIR}/lib
+ DOC "The SUscElas library"
+ )
+
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(SUSCELAS DEFAULT_MSG
+ SUSCELAS_INCLUDE_DIR SUSCELAS_LIBRARY)
+IF ((NOT WIN32) AND (NOT WIN64))
+ MARK_AS_ADVANCED(SUSCELAS_INCLUDE_DIR SUSCELAS_LIBRARY)
+ENDIF()
diff --git a/cmake/modules/FindScotch.cmake b/cmake/modules/FindScotch.cmake
index 0bea8009c..81fe68063 100644
--- a/cmake/modules/FindScotch.cmake
+++ b/cmake/modules/FindScotch.cmake
@@ -1,7 +1,7 @@
## =============================================================================
## This file is part of the mmg software package for the tetrahedral
## mesh modification.
-## Copyright (c) Inria - IMB (Université de Bordeaux) - LJLL (UPMC), 2004- .
+##** Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- .
##
## mmg is free software: you can redistribute it and/or modify it
## under the terms of the GNU Lesser General Public License as published
diff --git a/cmake/modules/LoadCiTests.cmake b/cmake/modules/LoadCiTests.cmake
index 82cdcde94..be3f11bdb 100644
--- a/cmake/modules/LoadCiTests.cmake
+++ b/cmake/modules/LoadCiTests.cmake
@@ -1,7 +1,7 @@
## =============================================================================
## This file is part of the mmg software package for the tetrahedral
## mesh modification.
-## Copyright (c) Inria - IMB (Université de Bordeaux) - LJLL (UPMC), 2004- .
+##** Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- .
##
## mmg is free software: you can redistribute it and/or modify it
## under the terms of the GNU Lesser General Public License as published
@@ -21,6 +21,7 @@
## =============================================================================
SET ( GET_MMG_TESTS "FALSE" )
+SET ( GET_MMG2D_TESTS "FALSE" )
SET ( GET_MMGS_TESTS "FALSE" )
SET ( GET_MMG3D_TESTS "FALSE" )
@@ -33,6 +34,7 @@ IF ( NOT EXISTS ${CMAKE_SOURCE_DIR}/ci_tests )
FILE(MAKE_DIRECTORY ${CMAKE_SOURCE_DIR}/ci_tests)
SET ( GET_MMG_TESTS "TRUE" )
+ SET ( GET_MMG2D_TESTS "TRUE" )
SET ( GET_MMGS_TESTS "TRUE" )
SET ( GET_MMG3D_TESTS "TRUE" )
@@ -67,6 +69,34 @@ ELSE ( )
then untar it in the project directory (mmg/ by default).")
ENDIF()
+ #--------------> mmg2d
+ IF ( EXISTS ${CMAKE_SOURCE_DIR}/ci_tests/mmg2d.version )
+ FILE(MD5 ${CMAKE_SOURCE_DIR}/ci_tests/mmg2d.version OLD_MMG2D_MD5)
+ ELSE ( )
+ SET ( OLD_MMG2D_MD5 "0" )
+ ENDIF ( )
+
+ FILE(DOWNLOAD https://www.dropbox.com/s/dyu7v04n4v2hgus/mmg2d.version?dl=0
+ ${CMAKE_SOURCE_DIR}/ci_tests/mmg2d.version
+ STATUS MMG2D_VERSION_STATUS
+ INACTIVITY_TIMEOUT 5)
+ LIST(GET MMG2D_VERSION_STATUS 0 MMG2D_VERSION_STATUS_0)
+ LIST(GET MMG2D_VERSION_STATUS 1 MMG2D_VERSION_STATUS_1)
+
+ IF ( MMG2D_VERSION_STATUS_0 MATCHES 0)
+ FILE(MD5 ${CMAKE_SOURCE_DIR}/ci_tests/mmg2d.version MMG2D_MD5)
+
+ IF ( NOT (${OLD_MMG2D_MD5} MATCHES ${MMG2D_MD5}) )
+ SET ( GET_MMG2D_TESTS "TRUE" )
+ ENDIF ()
+ ELSE( )
+ MESSAGE(WARNING "Failed to load a simple text file, download status:"
+ " ${MMG2D_VERSION_STATUS_1}.
+ Try to get it at the following link:
+ https://www.dropbox.com/s/b94gyooe1do6uul/mmg2d.tgz?dl=0
+ then untar it in the project directory (mmg/ by default).")
+ ENDIF()
+
#--------------> mmgs
IF ( EXISTS ${CMAKE_SOURCE_DIR}/ci_tests/mmgs.version )
FILE(MD5 ${CMAKE_SOURCE_DIR}/ci_tests/mmgs.version OLD_MMGS_MD5)
@@ -155,6 +185,36 @@ Try to untar it by hand in the project directory"
ENDIF ()
ENDIF ()
+
+#--------------> mmg2d
+IF ( GET_MMG2D_TESTS MATCHES "TRUE" )
+ MESSAGE("-- Download the mmg2d test cases. May be very long...")
+ FILE(DOWNLOAD https://www.dropbox.com/s/b94gyooe1do6uul/mmg2d.tgz?dl=0
+ ${CMAKE_SOURCE_DIR}/ci_tests/mmg2d.tgz
+ SHOW_PROGRESS)
+ IF ( NOT EXISTS ${CMAKE_SOURCE_DIR}/ci_tests/mmg2d.tgz )
+ MESSAGE("\n")
+ MESSAGE(WARNING "Fail to automatically download the mmg2d test cases.
+Try to get it at the following link:
+ https://www.dropbox.com/s/b94gyooe1do6uul/mmg2d.tgz?dl=0
+then untar it in the project directory (mmg/ by default).")
+ ELSE()
+ EXECUTE_PROCESS(
+ COMMAND ${CMAKE_COMMAND} -E tar xzf
+ ${CMAKE_SOURCE_DIR}/ci_tests/mmg2d.tgz
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/ci_tests/
+ )
+ IF ( NOT EXISTS ${CMAKE_SOURCE_DIR}/ci_tests/mmg2d.tgz )
+ MESSAGE("\n")
+ MESSAGE(WARNING "Fail to automatically untar the mmg2d "
+ "test cases directory (mmg2d.tgz).
+Try to untar it by hand in the project directory"
+ " (mmg/ci_tests/ by default).")
+ ENDIF()
+ FILE(REMOVE ${CMAKE_SOURCE_DIR}/ci_tests/mmg2d.tgz)
+ ENDIF ()
+ENDIF ()
+
#--------------> mmgs
IF ( GET_MMGS_TESTS MATCHES "TRUE" )
MESSAGE("-- Download the mmgs test cases. May be very long...")
diff --git a/cmake/modules/mmg.cmake b/cmake/modules/mmg.cmake
new file mode 100644
index 000000000..2acb3d039
--- /dev/null
+++ b/cmake/modules/mmg.cmake
@@ -0,0 +1,188 @@
+## =============================================================================
+## This file is part of the mmg software package for the tetrahedral
+## mesh modification.
+##** Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- .
+##
+## mmg is free software: you can redistribute it and/or modify it
+## under the terms of the GNU Lesser General Public License as published
+## by the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## mmg is distributed in the hope that it will be useful, but WITHOUT
+## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+## FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+## License for more details.
+##
+## You should have received a copy of the GNU Lesser General Public
+## License and of the GNU General Public License along with mmg (in
+## files COPYING.LESSER and COPYING). If not, see
+## . Please read their terms carefully and
+## use this copy of the mmg distribution only if you accept them.
+## =============================================================================
+
+## =============================================================================
+##
+## Compilation of mmg library and tests
+##
+## =============================================================================
+
+# Note: mmg3d.cmake, mmg2d.cmake and mmgs.cmake must have been called before
+# (thus the MMG*_SOURCE_DIR variables are already setted)
+
+############################################################################
+#####
+##### Compile mmg libraries
+#####
+############################################################################
+
+# Compile static library
+IF ( LIBMMG_STATIC )
+ ADD_LIBRARY(${PROJECT_NAME}_a STATIC
+ ${MMG2D_SOURCE_DIR}/lib${PROJECT_NAME}2df.h
+ ${sourcemmg2d_files} ${libmmg2d_file}
+ ${MMGS_SOURCE_DIR}/lib${PROJECT_NAME}sf.h
+ ${sourcemmgs_files} ${libmmgs_file}
+ ${MMG3D_SOURCE_DIR}/lib${PROJECT_NAME}3df.h
+ ${source_files} ${lib_file}
+ ${CMAKE_SOURCE_DIR}/src/mmg/libmmg.h
+ ${CMAKE_SOURCE_DIR}/src/mmg/libmmgf.h
+ )
+ SET_TARGET_PROPERTIES(${PROJECT_NAME}_a PROPERTIES OUTPUT_NAME
+ ${PROJECT_NAME})
+ TARGET_LINK_LIBRARIES(${PROJECT_NAME}_a ${LIBRARIES})
+ INSTALL(TARGETS ${PROJECT_NAME}_a
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib)
+ENDIF()
+
+# Compile shared library
+IF ( LIBMMG_SHARED )
+ ADD_LIBRARY(${PROJECT_NAME}_so SHARED
+ ${MMG2D_SOURCE_DIR}/lib${PROJECT_NAME}2df.h
+ ${sourcemmg2d_files} ${libmmg2d_file}
+ ${MMGS_SOURCE_DIR}/lib${PROJECT_NAME}sf.h
+ ${sourcemmgs_files} ${libmmgs_file}
+ ${MMG3D_SOURCE_DIR}/lib${PROJECT_NAME}3df.h
+ ${source_files} ${lib_file}
+ ${CMAKE_SOURCE_DIR}/src/mmg/libmmg.h
+ ${CMAKE_SOURCE_DIR}/src/mmg/libmmgf.h
+ )
+ SET_TARGET_PROPERTIES(${PROJECT_NAME}_so PROPERTIES
+ VERSION ${CMAKE_RELEASE_VERSION} SOVERSION 5)
+ SET_TARGET_PROPERTIES(${PROJECT_NAME}_so PROPERTIES
+ OUTPUT_NAME ${PROJECT_NAME})
+ TARGET_LINK_LIBRARIES(${PROJECT_NAME}_so ${LIBRARIES})
+ INSTALL(TARGETS ${PROJECT_NAME}_so
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib)
+ENDIF()
+
+IF ( LIBMMG_STATIC OR LIBMMG_SHARED )
+ # mmg header files needed for library
+ SET( mmg2d_headers
+ ${MMG2D_SOURCE_DIR}/libmmg2d.h
+ ${MMG2D_SOURCE_DIR}/libmmg2df.h
+ )
+ SET( mmg3d_headers
+ ${MMG3D_SOURCE_DIR}/libmmg3d.h
+ ${MMG3D_SOURCE_DIR}/libmmg3df.h
+ )
+ SET( mmgs_headers
+ ${MMGS_SOURCE_DIR}/libmmgs.h
+ ${MMGS_SOURCE_DIR}/libmmgsf.h
+ )
+ SET( mmg_headers
+ ${COMMON_SOURCE_DIR}/mmgcommon.h
+ ${COMMON_SOURCE_DIR}/eigenv.h
+ ${COMMON_SOURCE_DIR}/libmmgcommon.h
+ ${COMMON_SOURCE_DIR}/libmmgcommonf.h
+ ${COMMON_SOURCE_DIR}/chrono.h
+ ${CMAKE_SOURCE_DIR}/src/mmg/libmmg.h
+ ${CMAKE_SOURCE_DIR}/src/mmg/libmmgf.h
+ )
+ SET(MMG2D_INCLUDE ${CMAKE_SOURCE_DIR}/include/mmg/mmg2d )
+ SET(MMGS_INCLUDE ${CMAKE_SOURCE_DIR}/include/mmg/mmgs )
+ SET(MMG3D_INCLUDE ${CMAKE_SOURCE_DIR}/include/mmg/mmg3d )
+ SET(MMG_INCLUDE ${CMAKE_SOURCE_DIR}/include/mmg )
+ SET( mmg2d_includes
+ ${MMG2D_INCLUDE}/libmmg2d.h
+ ${MMG2D_INCLUDE}/libmmg2df.h
+ )
+ SET( mmgs_includes
+ ${MMGS_INCLUDE}/libmmgs.h
+ ${MMGS_INCLUDE}/libmmgsf.h
+ )
+ SET( mmg3d_includes
+ ${MMG3D_INCLUDE}/libmmg3d.h
+ ${MMG3D_INCLUDE}/libmmg3df.h
+ )
+ SET( mmg_includes
+ ${MMG_INCLUDE}/libmmg.h
+ ${MMG_INCLUDE}/libmmgf.h
+ ${MMG_INCLUDE}/mmgcommon.h
+ ${MMG_INCLUDE}/eigenv.h
+ ${MMG_INCLUDE}/libmmgcommon.h
+ ${MMG_INCLUDE}/libmmgcommonf.h
+ ${MMG_INCLUDE}/chrono.h
+ )
+
+ # Install header files in /usr/local or equivalent
+ INSTALL(FILES ${mmg2d_headers} DESTINATION include/mmg/mmg2d)
+ INSTALL(FILES ${mmgs_headers} DESTINATION include/mmg/mmgs)
+ INSTALL(FILES ${mmg3d_headers} DESTINATION include/mmg/mmg3d)
+ INSTALL(FILES ${mmg_headers} DESTINATION include/mmg)
+
+ ADD_CUSTOM_COMMAND(OUTPUT ${MMG_INCLUDE}/libmmgcommonf.h
+ COMMAND ${CMAKE_COMMAND} -E copy ${COMMON_SOURCE_DIR}/libmmgcommonf.h ${MMG_INCLUDE}/libmmgcommonf.h
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ DEPENDS ${COMMON_SOURCE_DIR}/libmmgcommonf.h)
+
+ IF ( NOT BUILD_MMG2D )
+ ADD_CUSTOM_COMMAND(OUTPUT ${MMG2D_INCLUDE}/libmmg2df.h
+ COMMAND ${CMAKE_COMMAND} -E copy ${COMMON_SOURCE_DIR}/libmmg2df.h ${MMG2D_INCLUDE}/libmmg2df.h
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ DEPENDS ${MMG2D_SOURCE_DIR}/libmmg2df.h)
+ ENDIF ()
+ IF ( NOT BUILD_MMGS )
+ ADD_CUSTOM_COMMAND(OUTPUT ${MMGS_INCLUDE}/libmmgsf.h
+ COMMAND ${CMAKE_COMMAND} -E copy ${COMMON_SOURCE_DIR}/libmmgsf.h ${MMGS_INCLUDE}/libmmgsf.h
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ DEPENDS ${MMGS_SOURCE_DIR}/libmmgsf.h)
+ ENDIF()
+ IF ( NOT BUILD_MMG3D )
+ ADD_CUSTOM_COMMAND(OUTPUT ${MMG3D_INCLUDE}/libmmg3df.h
+ COMMAND ${CMAKE_COMMAND} -E copy ${COMMON_SOURCE_DIR}/libmmg3df.h ${MMG3D_INCLUDE}/libmmg3df.h
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ DEPENDS ${MMG3D_SOURCE_DIR}/libmmg3df.h)
+ ENDIF()
+
+ ADD_CUSTOM_COMMAND(OUTPUT ${MMG_INCLUDE}/libmmgf.h
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/src/mmg/libmmgf.h ${MMG_INCLUDE}/libmmgf.h
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ DEPENDS ${CMAKE_SOURCE_DIR}/src/mmg/libmmgf.h
+ ${CMAKE_SOURCE_DIR}/src/mmgs/libmmgsf.h
+ ${CMAKE_SOURCE_DIR}/src/mmg2d/libmmg2df.h
+ ${CMAKE_SOURCE_DIR}/src/mmg3d/libmmg3df.h)
+
+
+ # Install header files in project directory
+ FILE (INSTALL ${mmg2d_headers}
+ DESTINATION ${CMAKE_SOURCE_DIR}/include/mmg/mmg2d
+ PATTERN "libmmg*f.h" EXCLUDE)
+ FILE (INSTALL ${mmgs_headers} DESTINATION ${CMAKE_SOURCE_DIR}/include/mmg/mmgs
+ PATTERN "libmmg*f.h" EXCLUDE)
+ FILE (INSTALL ${mmg3d_headers} DESTINATION ${CMAKE_SOURCE_DIR}/include/mmg/mmg3d
+ PATTERN "libmmg*f.h" EXCLUDE)
+ FILE (INSTALL ${mmg_headers} DESTINATION ${CMAKE_SOURCE_DIR}/include/mmg
+ PATTERN "libmmg*f.h" EXCLUDE)
+ENDIF()
+
+############################################################################
+#####
+##### Compile program to test library
+#####
+############################################################################
+
+IF ( TEST_LIBMMG )
+ INCLUDE(cmake/testing/libmmg_tests.cmake)
+ENDIF()
diff --git a/cmake/modules/mmg2d.cmake b/cmake/modules/mmg2d.cmake
new file mode 100644
index 000000000..3414f3ed7
--- /dev/null
+++ b/cmake/modules/mmg2d.cmake
@@ -0,0 +1,243 @@
+## =============================================================================
+## This file is part of the mmg software package for the tetrahedral
+## mesh modification.
+##** Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- .
+##
+## mmg is free software: you can redistribute it and/or modify it
+## under the terms of the GNU Lesser General Public License as published
+## by the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## mmg is distributed in the hope that it will be useful, but WITHOUT
+## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+## FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+## License for more details.
+##
+## You should have received a copy of the GNU Lesser General Public
+## License and of the GNU General Public License along with mmg (in
+## files COPYING.LESSER and COPYING). If not, see
+## . Please read their terms carefully and
+## use this copy of the mmg distribution only if you accept them.
+## =============================================================================
+
+## =============================================================================
+##
+## Compilation of mmg2d executable, libraries and tests
+##
+## =============================================================================
+
+SET(MMG2D_SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/mmg2d)
+
+############################################################################
+#####
+##### Fortran header: libmmg2df.h
+#####
+############################################################################
+
+IF ( NOT WIN32 )
+ ADD_CUSTOM_COMMAND(OUTPUT ${MMG2D_SOURCE_DIR}/libmmg2df.h
+ COMMAND genheader ${MMG2D_SOURCE_DIR}/libmmg2df.h
+ ${MMG2D_SOURCE_DIR}/libmmg2d.h ${CMAKE_SOURCE_DIR}/scripts/genfort.pl
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ DEPENDS genheader ${MMG2D_SOURCE_DIR}/libmmg2d.h ${COMMON_SOURCE_DIR}/libmmgcommonf.h
+ ${CMAKE_SOURCE_DIR}/scripts/genfort.pl
+ COMMENT "Generating Fortran header for mmg2d"
+ )
+ENDIF()
+
+###############################################################################
+#####
+##### Sources and libraries
+#####
+###############################################################################
+
+# Header files
+INCLUDE_DIRECTORIES(${MMG2D_SOURCE_DIR})
+
+# Source files
+FILE(
+ GLOB
+ sourcemmg2d_files
+ ${MMG2D_SOURCE_DIR}/*.c ${MMG2D_SOURCE_DIR}/*.h
+ ${COMMON_SOURCE_DIR}/*.c ${COMMON_SOURCE_DIR}/*.h
+ )
+LIST(REMOVE_ITEM sourcemmg2d_files
+ ${MMG2D_SOURCE_DIR}/mmg2d.c
+ ${MMG2D_SOURCE_DIR}/lib${PROJECT_NAME}2df.c
+ ${CMAKE_SOURCE_DIR}/src/libmmg.h
+ ${CMAKE_SOURCE_DIR}/src/libmmgf.h
+ ${REMOVE_FILE})
+FILE(
+ GLOB
+ mainmmg2d_file
+ ${MMG2D_SOURCE_DIR}/mmg2d.c
+ )
+FILE(
+ GLOB
+ libmmg2d_file
+ ${MMG2D_SOURCE_DIR}/lib${PROJECT_NAME}2d.c
+ ${MMG2D_SOURCE_DIR}/lib${PROJECT_NAME}2df.c
+ )
+
+############################################################################
+#####
+##### Compile mmg2d libraries
+#####
+############################################################################
+# Compile static library
+IF ( LIBMMG2D_STATIC )
+ ADD_LIBRARY(${PROJECT_NAME}2d_a STATIC
+ ${MMG2D_SOURCE_DIR}/lib${PROJECT_NAME}2df.h
+ ${sourcemmg2d_files} ${libmmg2d_file} )
+ SET_TARGET_PROPERTIES(${PROJECT_NAME}2d_a PROPERTIES OUTPUT_NAME
+ ${PROJECT_NAME}2d)
+ TARGET_LINK_LIBRARIES(${PROJECT_NAME}2d_a ${LIBRARIES})
+ INSTALL(TARGETS ${PROJECT_NAME}2d_a
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib)
+ENDIF()
+
+# Compile shared library
+IF ( LIBMMG2D_SHARED )
+ ADD_LIBRARY(${PROJECT_NAME}2d_so SHARED
+ ${MMG2D_SOURCE_DIR}/lib${PROJECT_NAME}2df.h
+ ${sourcemmg2d_files} ${libmmg2d_file})
+ SET_TARGET_PROPERTIES(${PROJECT_NAME}2d_so PROPERTIES
+ OUTPUT_NAME ${PROJECT_NAME}2d)
+ SET_TARGET_PROPERTIES(${PROJECT_NAME}2d_so PROPERTIES
+ VERSION ${CMAKE_RELEASE_VERSION} SOVERSION 5)
+ TARGET_LINK_LIBRARIES(${PROJECT_NAME}2d_so ${LIBRARIES})
+ INSTALL(TARGETS ${PROJECT_NAME}2d_so
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib)
+ENDIF()
+
+IF ( LIBMMG2D_STATIC OR LIBMMG2D_SHARED )
+ # mmg2d header files needed for library
+ SET( mmg2d_headers
+ ${MMG2D_SOURCE_DIR}/libmmg2d.h
+ ${MMG2D_SOURCE_DIR}/libmmg2df.h
+ ${COMMON_SOURCE_DIR}/mmgcommon.h
+ ${COMMON_SOURCE_DIR}/eigenv.h
+ ${COMMON_SOURCE_DIR}/libmmgcommon.h
+ ${COMMON_SOURCE_DIR}/libmmgcommonf.h
+ ${COMMON_SOURCE_DIR}/chrono.h
+ )
+ SET(MMG2D_INCLUDE ${CMAKE_SOURCE_DIR}/include/mmg/mmg2d )
+ SET( mmg2d_includes
+ ${MMG2D_INCLUDE}/libmmg2d.h
+ ${MMG2D_INCLUDE}/libmmg2df.h
+ ${MMG2D_INCLUDE}/mmgcommon.h
+ ${MMG2D_INCLUDE}/eigenv.h
+ ${MMG2D_INCLUDE}/libmmgcommon.h
+ ${MMG2D_INCLUDE}/libmmgcommonf.h
+ ${MMG2D_INCLUDE}/chrono.h
+ )
+ # Install header files in /usr/local or equivalent
+ INSTALL(FILES ${mmg2d_headers} DESTINATION include/mmg/mmg2d)
+
+ ADD_CUSTOM_COMMAND(OUTPUT ${MMG2D_INCLUDE}/libmmgcommonf.h
+ COMMAND ${CMAKE_COMMAND} -E copy ${COMMON_SOURCE_DIR}/libmmgcommonf.h ${MMG2D_INCLUDE}/libmmgcommonf.h
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ DEPENDS ${COMMON_SOURCE_DIR}/libmmgcommonf.h)
+ ADD_CUSTOM_COMMAND(OUTPUT ${MMG2D_INCLUDE}/libmmg2df.h
+ COMMAND ${CMAKE_COMMAND} -E copy ${MMG2D_SOURCE_DIR}/libmmg2df.h ${MMG2D_INCLUDE}/libmmg2df.h
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ DEPENDS ${MMG2D_SOURCE_DIR}/libmmg2df.h)
+
+ # Install header files in project directory
+ FILE (INSTALL ${mmg2d_headers}
+ DESTINATION ${CMAKE_SOURCE_DIR}/include/mmg/mmg2d
+ PATTERN "libmmg*f.h" EXCLUDE)
+
+ENDIF()
+
+############################################################################
+#####
+##### Compile program to test library
+#####
+############################################################################
+
+IF ( TEST_LIBMMG2D )
+ INCLUDE(cmake/testing/libmmg2d_tests.cmake)
+ENDIF ( )
+
+###############################################################################
+#####
+##### Compile MMG2D executable
+#####
+###############################################################################
+
+ADD_EXECUTABLE(${PROJECT_NAME}2d
+ ${MMG2D_SOURCE_DIR}/lib${PROJECT_NAME}2df.h ${sourcemmg2d_files} ${mainmmg2d_file} )
+
+IF ( WIN32 AND NOT MINGW AND USE_SCOTCH )
+ my_add_link_flags(${PROJECT_NAME}2d "/SAFESEH:NO")
+ENDIF ( )
+
+TARGET_LINK_LIBRARIES(${PROJECT_NAME}2d ${LIBRARIES})
+INSTALL(TARGETS ${PROJECT_NAME}2d RUNTIME DESTINATION bin)
+
+# in debug mode we name the executable mmg2d_debug
+SET_TARGET_PROPERTIES(${PROJECT_NAME}2d PROPERTIES DEBUG_POSTFIX _debug)
+# in Release mode we name the executable mmg2d_O3
+SET_TARGET_PROPERTIES(${PROJECT_NAME}2d PROPERTIES RELEASE_POSTFIX _O3)
+# in RelWithDebInfo mode we name the executable mmg2d_O3d
+SET_TARGET_PROPERTIES(${PROJECT_NAME}2d PROPERTIES RELWITHDEBINFO_POSTFIX _O3d)
+# in MinSizeRel mode we name the executable mmg2d_O3
+SET_TARGET_PROPERTIES(${PROJECT_NAME}2d PROPERTIES MINSIZEREL_POSTFIX _Os)
+
+###############################################################################
+#####
+##### Continuous integration
+#####
+###############################################################################
+
+IF ( BUILD_TESTING )
+ ##-------------------------------------------------------------------##
+ ##------- Set the continuous integration options --------------------##
+ ##-------------------------------------------------------------------##
+ SET(MMG2D_CI_TESTS ${CMAKE_SOURCE_DIR}/ci_tests/mmg2d )
+
+ ##-------------------------------------------------------------------##
+ ##--------------------------- Add tests and configure it ------------##
+ ##-------------------------------------------------------------------##
+ # Add runtime that we want to test for mmg2d
+ IF( MMG2D_CI )
+ IF(${CMAKE_BUILD_TYPE} MATCHES "Debug")
+ SET(EXECUT_MMG2D ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}2d_debug)
+ SET(BUILDNAME ${BUILDNAME}_debug CACHE STRING "build name variable")
+ ELSEIF(${CMAKE_BUILD_TYPE} MATCHES "Release")
+ SET(EXECUT_MMG2D ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}2d_O3)
+ SET(BUILDNAME ${BUILDNAME}_O3 CACHE STRING "build name variable")
+ ELSEIF(${CMAKE_BUILD_TYPE} MATCHES "RelWithDebInfo")
+ SET(EXECUT_MMG2D ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}2d_O3d)
+ SET(BUILDNAME ${BUILDNAME}_O3d CACHE STRING "build name variable")
+ ELSEIF(${CMAKE_BUILD_TYPE} MATCHES "MinSizeRel")
+ SET(EXECUT_MMG2D ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}2d_Os)
+ SET(BUILDNAME ${BUILDNAME}_Os CACHE STRING "build name variable")
+ ELSE()
+ SET(EXECUT_MMG2D ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}2d)
+ SET(BUILDNAME ${BUILDNAME} CACHE STRING "build name variable")
+ ENDIF()
+
+ SET ( LISTEXEC_MMG2D ${EXECUT_MMG2D} )
+ IF ( TEST_LIBMMG2D )
+ SET(LIBMMG2D_EXEC0 ${EXECUTABLE_OUTPUT_PATH}/libmmg2d_example0)
+ SET(LIBMMG2D_EXEC1 ${EXECUTABLE_OUTPUT_PATH}/libmmg2d_example1)
+
+ ADD_TEST(NAME libmmg2d_example0 COMMAND ${LIBMMG2D_EXEC0})
+ ADD_TEST(NAME libmmg2d_example1 COMMAND ${LIBMMG2D_EXEC1})
+
+ IF ( CMAKE_Fortran_COMPILER)
+ SET(LIBMMG2D_EXECFORTRAN ${EXECUTABLE_OUTPUT_PATH}/libmmg2d_fortran_a)
+ ADD_TEST(NAME libmmg2d_fortran COMMAND ${LIBMMG2D_EXECFORTRAN})
+ ENDIF()
+
+ ENDIF()
+ # Add mmg2d tests
+ INCLUDE( ${CMAKE_SOURCE_DIR}/cmake/testing/mmg2d_tests.cmake )
+
+ ENDIF( MMG2D_CI )
+
+ENDIF ( BUILD_TESTING )
diff --git a/cmake/modules/mmg3d.cmake b/cmake/modules/mmg3d.cmake
new file mode 100644
index 000000000..c1f3943db
--- /dev/null
+++ b/cmake/modules/mmg3d.cmake
@@ -0,0 +1,314 @@
+## =============================================================================
+## This file is part of the mmg software package for the tetrahedral
+## mesh modification.
+##** Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- .
+##
+## mmg is free software: you can redistribute it and/or modify it
+## under the terms of the GNU Lesser General Public License as published
+## by the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## mmg is distributed in the hope that it will be useful, but WITHOUT
+## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+## FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+## License for more details.
+##
+## You should have received a copy of the GNU Lesser General Public
+## License and of the GNU General Public License along with mmg (in
+## files COPYING.LESSER and COPYING). If not, see
+## . Please read their terms carefully and
+## use this copy of the mmg distribution only if you accept them.
+## =============================================================================
+
+## =============================================================================
+##
+## Compilation of mmg3d executable, libraries and tests
+##
+## =============================================================================
+
+SET(MMG3D_SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/mmg3d)
+
+############################################################################
+#####
+##### Fortran header: libmmg3df.h
+#####
+############################################################################
+
+IF ( NOT WIN32 )
+ ADD_CUSTOM_COMMAND(OUTPUT ${MMG3D_SOURCE_DIR}/libmmg3df.h
+ COMMAND genheader ${MMG3D_SOURCE_DIR}/libmmg3df.h
+ ${MMG3D_SOURCE_DIR}/libmmg3d.h ${CMAKE_SOURCE_DIR}/scripts/genfort.pl
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ DEPENDS genheader ${MMG3D_SOURCE_DIR}/libmmg3d.h ${COMMON_SOURCE_DIR}/libmmgcommonf.h
+ ${CMAKE_SOURCE_DIR}/scripts/genfort.pl
+ COMMENT "Generating Fortran header for mmg3d"
+ )
+ENDIF()
+
+############################################################################
+#####
+##### Choose type of insertion: delaunay kernel or patterns
+#####
+############################################################################
+# Should we use patterns for insertion istead of delaunay kernel
+IF ( NOT PATTERN )
+ MESSAGE(STATUS "Vertex insertion by delaunay kernel")
+ELSE()
+ MESSAGE(STATUS "Vertex insertion by patterns")
+ SET(CMAKE_C_FLAGS "-DPATTERN ${CMAKE_C_FLAGS}")
+ENDIF()
+
+###############################################################################
+#####
+##### Sources and libraries
+#####
+###############################################################################
+
+# Header files
+INCLUDE_DIRECTORIES(${MMG3D_SOURCE_DIR})
+
+# Source files
+FILE(
+ GLOB
+ source_files
+ ${MMG3D_SOURCE_DIR}/*.c ${MMG3D_SOURCE_DIR}/*.h
+ ${COMMON_SOURCE_DIR}/*.c ${COMMON_SOURCE_DIR}/*.h
+ )
+LIST(REMOVE_ITEM source_files
+ ${MMG3D_SOURCE_DIR}/mmg3d.c
+ ${MMG3D_SOURCE_DIR}/lib${PROJECT_NAME}3df.c
+ ${CMAKE_SOURCE_DIR}/src/libmmg.h
+ ${CMAKE_SOURCE_DIR}/src/libmmgf.h
+ ${REMOVE_FILE})
+FILE(
+ GLOB
+ main_file
+ ${MMG3D_SOURCE_DIR}/mmg3d.c
+ )
+FILE(
+ GLOB
+ lib_file
+ #${MMG3D_SOURCE_DIR}/library_tools.c
+ ${MMG3D_SOURCE_DIR}/lib${PROJECT_NAME}3df.c
+ )
+
+############################################################################
+#####
+##### Elastic
+#####
+############################################################################
+
+IF( USE_SUSCELAS )
+ # Set flags for building test program
+ INCLUDE_DIRECTORIES(${SUSCELAS_INCLUDE_DIR})
+
+ SET(CMAKE_REQUIRED_INCLUDES ${SUSCELAS_INCLUDE_DIR})
+ SET(CMAKE_REQUIRED_LIBRARIES ${SUSCELAS_LIBRARY})
+
+ SET(CMAKE_C_FLAGS "-DUSE_SUSCELAS ${CMAKE_C_FLAGS}")
+ MESSAGE(STATUS
+ "Compilation with the Elas library: ${SUSCELAS_LIBRARY} ")
+ SET( LIBRARIES ${SUSCELAS_LINK_FLAGS} ${LIBRARIES})
+ SET( LIBRARIES ${SUSCELAS_LIBRARY} ${LIBRARIES})
+ENDIF()
+
+IF (SUSCELAS_NOTFOUND)
+ MESSAGE ( WARNING "SUscElas is a library to solve the linear elasticity "
+ "problem (see https://github.com/SUscTools/SUscElas to download it). "
+ "This library is needed to use the lagrangian motion option. "
+ "If you have already installed SUscElas and want to use it, "
+ "please set the CMake variable or environment variable SUSCELAS_DIR "
+ "to your SUscElas directory.")
+ENDIF ( )
+
+############################################################################
+#####
+##### Compile mmg3d libraries
+#####
+############################################################################
+
+# Compile static library
+IF ( LIBMMG3D_STATIC )
+ ADD_LIBRARY(${PROJECT_NAME}3d_a STATIC
+ ${MMG3D_SOURCE_DIR}/lib${PROJECT_NAME}3df.h
+ ${source_files} ${lib_file} )
+ SET_TARGET_PROPERTIES(${PROJECT_NAME}3d_a PROPERTIES OUTPUT_NAME
+ ${PROJECT_NAME}3d)
+ TARGET_LINK_LIBRARIES(${PROJECT_NAME}3d_a ${LIBRARIES})
+ INSTALL(TARGETS ${PROJECT_NAME}3d_a
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib)
+ENDIF()
+
+# Compile shared library
+IF ( LIBMMG3D_SHARED )
+ ADD_LIBRARY(${PROJECT_NAME}3d_so SHARED
+ ${MMG3D_SOURCE_DIR}/lib${PROJECT_NAME}3df.h
+ ${source_files} ${lib_file})
+ SET_TARGET_PROPERTIES(${PROJECT_NAME}3d_so PROPERTIES
+ VERSION ${CMAKE_RELEASE_VERSION} SOVERSION 5)
+ SET_TARGET_PROPERTIES(${PROJECT_NAME}3d_so PROPERTIES
+ OUTPUT_NAME ${PROJECT_NAME}3d)
+ TARGET_LINK_LIBRARIES(${PROJECT_NAME}3d_so ${LIBRARIES})
+ INSTALL(TARGETS ${PROJECT_NAME}3d_so
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib)
+ENDIF()
+
+IF ( LIBMMG3D_STATIC OR LIBMMG3D_SHARED )
+ # mmg3d header files needed for library
+ SET( mmg3d_headers
+ ${MMG3D_SOURCE_DIR}/libmmg3d.h
+ ${MMG3D_SOURCE_DIR}/libmmg3df.h
+ ${COMMON_SOURCE_DIR}/mmgcommon.h
+ ${COMMON_SOURCE_DIR}/eigenv.h
+ ${COMMON_SOURCE_DIR}/libmmgcommon.h
+ ${COMMON_SOURCE_DIR}/libmmgcommonf.h
+ ${COMMON_SOURCE_DIR}/chrono.h
+ )
+ SET(MMG3D_INCLUDE ${CMAKE_SOURCE_DIR}/include/mmg/mmg3d )
+ SET( mmg3d_includes
+ ${MMG3D_INCLUDE}/libmmg3d.h
+ ${MMG3D_INCLUDE}/libmmg3df.h
+ ${MMG3D_INCLUDE}/mmgcommon.h
+ ${MMG3D_INCLUDE}/eigenv.h
+ ${MMG3D_INCLUDE}/libmmgcommon.h
+ ${MMG3D_INCLUDE}/libmmgcommonf.h
+ ${MMG3D_INCLUDE}/chrono.h
+ )
+ # Install header files in /usr/local or equivalent
+ INSTALL(FILES ${mmg3d_headers} DESTINATION include/mmg/mmg3d)
+
+ ADD_CUSTOM_COMMAND(OUTPUT ${MMG3D_INCLUDE}/libmmgcommonf.h
+ COMMAND ${CMAKE_COMMAND} -E copy ${COMMON_SOURCE_DIR}/libmmgcommonf.h ${MMG3D_INCLUDE}/libmmgcommonf.h
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ DEPENDS ${COMMON_SOURCE_DIR}/libmmgcommonf.h)
+ ADD_CUSTOM_COMMAND(OUTPUT ${MMG3D_INCLUDE}/libmmg3df.h
+ COMMAND ${CMAKE_COMMAND} -E copy ${MMG3D_SOURCE_DIR}/libmmg3df.h ${MMG3D_INCLUDE}/libmmg3df.h
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ DEPENDS ${MMG3D_SOURCE_DIR}/libmmg3df.h)
+
+ # Install header files in project directory
+ FILE ( INSTALL ${mmg3d_headers} DESTINATION ${CMAKE_SOURCE_DIR}/include/mmg/mmg3d
+ PATTERN "libmmg*f.h" EXCLUDE)
+ENDIF()
+
+############################################################################
+#####
+##### Compile program to test library
+#####
+############################################################################
+
+IF ( TEST_LIBMMG3D )
+ INCLUDE(cmake/testing/libmmg3d_tests.cmake)
+ INCLUDE(cmake/testing/libmmg3d_oldAPI_tests.cmake)
+ENDIF()
+
+###############################################################################
+#####
+##### Compile MMG3D executable
+#####
+###############################################################################
+ADD_EXECUTABLE(${PROJECT_NAME}3d
+ ${MMG3D_SOURCE_DIR}/lib${PROJECT_NAME}3df.h
+ ${source_files} ${main_file})
+
+IF ( WIN32 AND NOT MINGW AND USE_SCOTCH )
+ my_add_link_flags(${PROJECT_NAME}3d "/SAFESEH:NO")
+ENDIF ( )
+
+TARGET_LINK_LIBRARIES(${PROJECT_NAME}3d ${LIBRARIES})
+INSTALL(TARGETS ${PROJECT_NAME}3d RUNTIME DESTINATION bin)
+
+# in debug mode we name the executable mmg3d_debug
+SET_TARGET_PROPERTIES(${PROJECT_NAME}3d PROPERTIES DEBUG_POSTFIX _debug)
+# in Release mode we name the executable mmg3d_O3
+SET_TARGET_PROPERTIES(${PROJECT_NAME}3d PROPERTIES RELEASE_POSTFIX _O3)
+# in RelWithDebInfo mode we name the executable mmg3d_O3d
+SET_TARGET_PROPERTIES(${PROJECT_NAME}3d PROPERTIES RELWITHDEBINFO_POSTFIX _O3d)
+# in MinSizeRel mode we name the executable mmg3d_Os
+SET_TARGET_PROPERTIES(${PROJECT_NAME}3d PROPERTIES MINSIZEREL_POSTFIX _Os)
+
+
+###############################################################################
+#####
+##### Continuous integration
+#####
+###############################################################################
+
+IF ( BUILD_TESTING )
+ ##-------------------------------------------------------------------##
+ ##------- Set the continuous integration options --------------------##
+ ##-------------------------------------------------------------------##
+ SET(MMG3D_CI_TESTS ${CMAKE_SOURCE_DIR}/ci_tests/mmg3d )
+
+ ##-------------------------------------------------------------------##
+ ##--------------------------- Add tests and configure it ------------##
+ ##-------------------------------------------------------------------##
+ # Add runtime that we want to test for mmg3d
+ IF ( MMG3D_CI )
+
+ IF ( LONG_TESTS )
+ # Run some tests twice with the output of the previous test as input
+ OPTION ( RUN_AGAIN "Enable/Disable second run of some tests" ON )
+ MARK_AS_ADVANCED(RUN_AGAIN)
+ ELSE ( )
+ SET ( RUN_AGAIN OFF )
+ ENDIF ( )
+
+ IF(${CMAKE_BUILD_TYPE} MATCHES "Debug")
+ SET(EXECUT_MMG3D ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}3d_debug)
+ SET(BUILDNAME ${BUILDNAME}_debug CACHE STRING "build name variable")
+ ELSEIF(${CMAKE_BUILD_TYPE} MATCHES "Release")
+ SET(EXECUT_MMG3D ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}3d_O3)
+ SET(BUILDNAME ${BUILDNAME}_O3 CACHE STRING "build name variable")
+ ELSEIF(${CMAKE_BUILD_TYPE} MATCHES "RelWithDebInfo")
+ SET(EXECUT_MMG3D ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}3d_O3d)
+ SET(BUILDNAME ${BUILDNAME}_O3d CACHE STRING "build name variable")
+ ELSEIF(${CMAKE_BUILD_TYPE} MATCHES "MinSizeRel")
+ SET(EXECUT_MMG3D ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}3d_Os)
+ SET(BUILDNAME ${BUILDNAME}_Os CACHE STRING "build name variable")
+ ELSE()
+ SET(EXECUT_MMG3D ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}3d)
+ SET(BUILDNAME ${BUILDNAME} CACHE STRING "build name variable")
+ ENDIF()
+
+ SET ( LISTEXEC_MMG3D ${EXECUT_MMG3D} )
+ IF ( TEST_LIBMMG3D )
+ SET(LIBMMG3D_EXEC0_a ${EXECUTABLE_OUTPUT_PATH}/libmmg3d_example0_a)
+ SET(LIBMMG3D_EXEC0_b ${EXECUTABLE_OUTPUT_PATH}/libmmg3d_example0_b)
+ SET(LIBMMG3D_EXEC1 ${EXECUTABLE_OUTPUT_PATH}/libmmg3d_example1)
+ SET(LIBMMG3D_EXEC2 ${EXECUTABLE_OUTPUT_PATH}/libmmg3d_example2)
+ SET(LIBMMG3D_EXEC4 ${EXECUTABLE_OUTPUT_PATH}/libmmg3d_example4)
+ SET(LIBMMG3D_EXEC5 ${EXECUTABLE_OUTPUT_PATH}/libmmg3d_example5)
+
+ ADD_TEST(NAME libmmg3d_example0_a COMMAND ${LIBMMG3D_EXEC0_a})
+ ADD_TEST(NAME libmmg3d_example0_b COMMAND ${LIBMMG3D_EXEC0_b})
+ ADD_TEST(NAME libmmg3d_example1 COMMAND ${LIBMMG3D_EXEC1})
+ ADD_TEST(NAME libmmg3d_example2 COMMAND ${LIBMMG3D_EXEC2})
+ IF ( USE_SUSCELAS )
+ ADD_TEST(NAME libmmg3d_example4 COMMAND ${LIBMMG3D_EXEC4})
+ ENDIF ()
+ ADD_TEST(NAME libmmg3d_example5 COMMAND ${LIBMMG3D_EXEC5})
+
+ SET( LISTEXEC_MMG3D ${LISTEXEC_MMG3D} )
+
+ IF ( CMAKE_Fortran_COMPILER)
+ SET(LIBMMG3D_EXECFORTRAN_a ${EXECUTABLE_OUTPUT_PATH}/libmmg3d_fortran_a)
+ SET(LIBMMG3D_EXECFORTRAN_b ${EXECUTABLE_OUTPUT_PATH}/libmmg3d_fortran_b)
+ ADD_TEST(NAME libmmg3d_fortran_a COMMAND ${LIBMMG3D_EXECFORTRAN_a})
+ ADD_TEST(NAME libmmg3d_fortran_b COMMAND ${LIBMMG3D_EXECFORTRAN_b})
+ ENDIF()
+
+ ENDIF ( TEST_LIBMMG3D )
+
+ # Add more tests
+ INCLUDE( ${CMAKE_SOURCE_DIR}/cmake/testing/mmg3d_tests.cmake )
+
+ IF ( RUN_AGAIN )
+ INCLUDE( ${CMAKE_SOURCE_DIR}/cmake/testing/mmg3d_rerun_tests.cmake )
+ ENDIF()
+
+ ENDIF ( MMG3D_CI )
+
+ENDIF ( BUILD_TESTING )
diff --git a/cmake/modules/mmgs.cmake b/cmake/modules/mmgs.cmake
new file mode 100644
index 000000000..b16df9d1b
--- /dev/null
+++ b/cmake/modules/mmgs.cmake
@@ -0,0 +1,249 @@
+## =============================================================================
+## This file is part of the mmg software package for the tetrahedral
+## mesh modification.
+##** Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- .
+##
+## mmg is free software: you can redistribute it and/or modify it
+## under the terms of the GNU Lesser General Public License as published
+## by the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## mmg is distributed in the hope that it will be useful, but WITHOUT
+## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+## FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+## License for more details.
+##
+## You should have received a copy of the GNU Lesser General Public
+## License and of the GNU General Public License along with mmg (in
+## files COPYING.LESSER and COPYING). If not, see
+## . Please read their terms carefully and
+## use this copy of the mmg distribution only if you accept them.
+## =============================================================================
+
+## =============================================================================
+##
+## Compilation of mmgs executable, libraries and tests
+##
+## =============================================================================
+
+SET(MMGS_SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/mmgs)
+
+############################################################################
+#####
+##### Fortran header: libmmgsf.h
+#####
+############################################################################
+
+IF ( NOT WIN32 )
+ ADD_CUSTOM_COMMAND(OUTPUT ${MMGS_SOURCE_DIR}/libmmgsf.h
+ COMMAND genheader ${MMGS_SOURCE_DIR}/libmmgsf.h
+ ${MMGS_SOURCE_DIR}/libmmgs.h ${CMAKE_SOURCE_DIR}/scripts/genfort.pl
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ DEPENDS genheader ${MMGS_SOURCE_DIR}/libmmgs.h ${COMMON_SOURCE_DIR}/libmmgcommonf.h
+ ${CMAKE_SOURCE_DIR}/scripts/genfort.pl
+ COMMENT "Generating Fortran header for mmgs"
+ )
+ENDIF ( )
+
+###############################################################################
+#####
+##### Sources and libraries
+#####
+###############################################################################
+
+# Header files
+INCLUDE_DIRECTORIES(${MMGS_SOURCE_DIR})
+
+# Source files
+FILE(
+ GLOB
+ sourcemmgs_files
+ ${MMGS_SOURCE_DIR}/*.c ${MMGS_SOURCE_DIR}/*.h
+ ${COMMON_SOURCE_DIR}/*.c ${COMMON_SOURCE_DIR}/*.h
+ )
+LIST(REMOVE_ITEM sourcemmgs_files
+ ${MMGS_SOURCE_DIR}/mmgs.c
+ ${MMGS_SOURCE_DIR}/lib${PROJECT_NAME}sf.c
+ ${CMAKE_SOURCE_DIR}/src/libmmg.h
+ ${CMAKE_SOURCE_DIR}/src/libmmgf.h
+ ${REMOVE_FILE})
+FILE(
+ GLOB
+ mainmmgs_file
+ ${MMGS_SOURCE_DIR}/mmgs.c
+ )
+FILE(
+ GLOB
+ libmmgs_file
+ ${MMGS_SOURCE_DIR}/lib${PROJECT_NAME}s.c
+ ${MMGS_SOURCE_DIR}/lib${PROJECT_NAME}sf.c
+ )
+
+############################################################################
+#####
+##### Compile mmgs libraries
+#####
+############################################################################
+
+IF ( LIBMMGS_STATIC )
+ ADD_LIBRARY(${PROJECT_NAME}s_a STATIC
+ ${MMGS_SOURCE_DIR}/lib${PROJECT_NAME}sf.h
+ ${sourcemmgs_files} ${libmmgs_file} )
+ SET_TARGET_PROPERTIES(${PROJECT_NAME}s_a PROPERTIES OUTPUT_NAME
+ ${PROJECT_NAME}s)
+ TARGET_LINK_LIBRARIES(${PROJECT_NAME}s_a ${LIBRARIES})
+ INSTALL(TARGETS ${PROJECT_NAME}s_a
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib)
+ENDIF()
+
+# Compile shared library
+IF ( LIBMMGS_SHARED )
+ ADD_LIBRARY(${PROJECT_NAME}s_so SHARED
+ ${MMGS_SOURCE_DIR}/lib${PROJECT_NAME}sf.h
+ ${sourcemmgs_files} ${libmmgs_file})
+ SET_TARGET_PROPERTIES(${PROJECT_NAME}s_so PROPERTIES
+ OUTPUT_NAME ${PROJECT_NAME}s)
+ SET_TARGET_PROPERTIES(${PROJECT_NAME}s_so PROPERTIES
+ VERSION ${CMAKE_RELEASE_VERSION} SOVERSION 5)
+ TARGET_LINK_LIBRARIES(${PROJECT_NAME}s_so ${LIBRARIES})
+ INSTALL(TARGETS ${PROJECT_NAME}s_so
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib)
+ENDIF()
+
+IF ( LIBMMGS_STATIC OR LIBMMGS_SHARED )
+ # mmgs header files needed for library
+ SET( mmgs_headers
+ ${MMGS_SOURCE_DIR}/libmmgs.h
+ ${MMGS_SOURCE_DIR}/libmmgsf.h
+ ${COMMON_SOURCE_DIR}/mmgcommon.h
+ ${COMMON_SOURCE_DIR}/eigenv.h
+ ${COMMON_SOURCE_DIR}/libmmgcommon.h
+ ${COMMON_SOURCE_DIR}/libmmgcommonf.h
+ ${COMMON_SOURCE_DIR}/chrono.h
+ )
+ SET(MMGS_INCLUDE ${CMAKE_SOURCE_DIR}/include/mmg/mmgs )
+ SET( mmgs_includes
+ ${MMGS_INCLUDE}/libmmgs.h
+ ${MMGS_INCLUDE}/libmmgsf.h
+ ${MMGS_INCLUDE}/mmgcommon.h
+ ${MMGS_INCLUDE}/eigenv.h
+ ${MMGS_INCLUDE}/libmmgcommon.h
+ ${MMGS_INCLUDE}/libmmgcommonf.h
+ ${MMGS_INCLUDE}/chrono.h
+ )
+
+ # Install header files in /usr/local or equivalent
+ INSTALL(FILES ${mmgs_headers} DESTINATION include/mmg/mmgs)
+
+ ADD_CUSTOM_COMMAND(OUTPUT ${MMGS_INCLUDE}/libmmgcommonf.h
+ COMMAND ${CMAKE_COMMAND} -E copy ${COMMON_SOURCE_DIR}/libmmgcommonf.h ${MMGS_INCLUDE}/libmmgcommonf.h
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ DEPENDS ${COMMON_SOURCE_DIR}/libmmgcommonf.h)
+ ADD_CUSTOM_COMMAND(OUTPUT ${MMGS_INCLUDE}/libmmgsf.h
+ COMMAND ${CMAKE_COMMAND} -E copy ${MMGS_SOURCE_DIR}/libmmgsf.h ${MMGS_INCLUDE}/libmmgsf.h
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ DEPENDS ${MMGS_SOURCE_DIR}/libmmgsf.h)
+
+ # Install header files in project directory
+ FILE ( INSTALL ${mmgs_headers}
+ DESTINATION ${CMAKE_SOURCE_DIR}/include/mmg/mmgs
+ PATTERN "libmmg*f.h" EXCLUDE)
+
+ENDIF()
+
+############################################################################
+#####
+##### Compile program to test library
+#####
+############################################################################
+
+IF ( TEST_LIBMMGS )
+ INCLUDE(cmake/testing/libmmgs_tests.cmake)
+ELSE ( )
+ SET ( TEST_LIBMMG2D OFF )
+ENDIF()
+
+###############################################################################
+#####
+##### Compile MMGS executable
+#####
+###############################################################################
+
+ADD_EXECUTABLE(${PROJECT_NAME}s
+ ${MMGS_SOURCE_DIR}/lib${PROJECT_NAME}sf.h
+ ${sourcemmgs_files} ${mainmmgs_file})
+
+IF ( WIN32 AND NOT MINGW AND USE_SCOTCH )
+ my_add_link_flags(${PROJECT_NAME}s "/SAFESEH:NO")
+ENDIF ( )
+
+TARGET_LINK_LIBRARIES(${PROJECT_NAME}s ${LIBRARIES})
+INSTALL(TARGETS ${PROJECT_NAME}s RUNTIME DESTINATION bin)
+
+# in debug mode we name the executable mmgs_debug
+SET_TARGET_PROPERTIES(${PROJECT_NAME}s PROPERTIES DEBUG_POSTFIX _debug)
+# in Release mode we name the executable mmgs_O3
+SET_TARGET_PROPERTIES(${PROJECT_NAME}s PROPERTIES RELEASE_POSTFIX _O3)
+# in RelWithDebInfo mode we name the executable mmgs_O3d
+SET_TARGET_PROPERTIES(${PROJECT_NAME}s PROPERTIES RELWITHDEBINFO_POSTFIX _O3d)
+# in MinSizeRel mode we name the executable mmgs_O3
+SET_TARGET_PROPERTIES(${PROJECT_NAME}s PROPERTIES MINSIZEREL_POSTFIX _Os)
+
+###############################################################################
+#####
+##### Continuous integration
+#####
+###############################################################################
+
+IF ( BUILD_TESTING )
+ ##-------------------------------------------------------------------##
+ ##------- Set the continuous integration options --------------------##
+ ##-------------------------------------------------------------------##
+ SET(MMGS_CI_TESTS ${CMAKE_SOURCE_DIR}/ci_tests/mmgs )
+
+ ##-------------------------------------------------------------------##
+ ##--------------------------- Add tests and configure it ------------##
+ ##-------------------------------------------------------------------##
+ # Add runtime that we want to test for mmgs
+ IF( MMGS_CI )
+ IF(${CMAKE_BUILD_TYPE} MATCHES "Debug")
+ FILE(TO_NATIVE_PATH ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}s_debug EXECUT_MMGS)
+ #SET(EXECUT_MMGS ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}s_debug)
+ SET(BUILDNAME ${BUILDNAME}_debug CACHE STRING "build name variable")
+ ELSEIF(${CMAKE_BUILD_TYPE} MATCHES "Release")
+ SET(EXECUT_MMGS ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}s_O3)
+ SET(BUILDNAME ${BUILDNAME}_O3 CACHE STRING "build name variable")
+ ELSEIF(${CMAKE_BUILD_TYPE} MATCHES "RelWithDebInfo")
+ SET(EXECUT_MMGS ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}s_O3d)
+ SET(BUILDNAME ${BUILDNAME}_O3d CACHE STRING "build name variable")
+ ELSEIF(${CMAKE_BUILD_TYPE} MATCHES "MinSizeRel")
+ SET(EXECUT_MMGS ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}s_Os)
+ SET(BUILDNAME ${BUILDNAME}_Os CACHE STRING "build name variable")
+ ELSE()
+ SET(EXECUT_MMGS ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}s)
+ SET(BUILDNAME ${BUILDNAME} CACHE STRING "build name variable")
+ ENDIF()
+
+ SET ( LISTEXEC_MMGS ${EXECUT_MMGS} )
+
+ IF ( TEST_LIBMMGS )
+ SET(LIBMMGS_EXEC0 ${EXECUTABLE_OUTPUT_PATH}/libmmgs_example0)
+ SET(LIBMMGS_EXEC1 ${EXECUTABLE_OUTPUT_PATH}/libmmgs_example1)
+
+ ADD_TEST(NAME libmmgs_example0 COMMAND ${LIBMMGS_EXEC0})
+ ADD_TEST(NAME libmmgs_example1 COMMAND ${LIBMMGS_EXEC1})
+
+ IF ( CMAKE_Fortran_COMPILER)
+ SET(LIBMMGS_EXECFORTRAN ${EXECUTABLE_OUTPUT_PATH}/libmmgs_fortran)
+ ADD_TEST(NAME libmmgs_fortran COMMAND ${LIBMMGS_EXECFORTRAN})
+ ENDIF()
+
+ ENDIF()
+ # Add mmgs tests
+ INCLUDE( ${CMAKE_SOURCE_DIR}/cmake/testing/mmgs_tests.cmake )
+
+ ENDIF ( MMGS_CI )
+
+ENDIF ( BUILD_TESTING )
diff --git a/cmake/testing/libmmg2d_tests.cmake b/cmake/testing/libmmg2d_tests.cmake
new file mode 100644
index 000000000..b5ca5f414
--- /dev/null
+++ b/cmake/testing/libmmg2d_tests.cmake
@@ -0,0 +1,72 @@
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+
+###############################################################################
+#####
+##### C Tests
+#####
+###############################################################################
+
+ADD_EXECUTABLE(libmmg2d_example0
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg2d/adaptation_example0/main.c ${mmg2d_includes})
+
+ADD_EXECUTABLE(libmmg2d_example1
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg2d/adaptation_example1/main.c ${mmg2d_includes})
+
+ADD_EXECUTABLE(libmmg2d_example2
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg2d/squareGeneration_example2/main.c ${mmg2d_includes})
+
+ IF ( WIN32 AND ((NOT MINGW) AND USE_SCOTCH) )
+ my_add_link_flags(libmmg2d_example0 "/SAFESEH:NO")
+ my_add_link_flags(libmmg2d_example1 "/SAFESEH:NO")
+ my_add_link_flags(libmmg2d_example2 "/SAFESEH:NO")
+ ENDIF ( )
+
+IF ( LIBMMG2D_STATIC )
+
+ TARGET_LINK_LIBRARIES(libmmg2d_example0 ${PROJECT_NAME}2d_a)
+ TARGET_LINK_LIBRARIES(libmmg2d_example1 ${PROJECT_NAME}2d_a)
+ TARGET_LINK_LIBRARIES(libmmg2d_example2 ${PROJECT_NAME}2d_a)
+
+ELSEIF ( LIBMMG2D_SHARED )
+
+ TARGET_LINK_LIBRARIES(libmmg2d_example0 ${PROJECT_NAME}2d_so)
+ TARGET_LINK_LIBRARIES(libmmg2d_example1 ${PROJECT_NAME}2d_so)
+ TARGET_LINK_LIBRARIES(libmmg2d_example2 ${PROJECT_NAME}2d_so)
+
+ELSE ()
+ MESSAGE(WARNING "You must activate the compilation of the static or"
+ " shared ${PROJECT_NAME} library to compile this tests." )
+ENDIF ()
+
+INSTALL(TARGETS libmmg2d_example0 RUNTIME DESTINATION bin )
+INSTALL(TARGETS libmmg2d_example1 RUNTIME DESTINATION bin )
+INSTALL(TARGETS libmmg2d_example2 RUNTIME DESTINATION bin )
+
+###############################################################################
+#####
+##### Fortran Tests
+#####
+###############################################################################
+
+IF (CMAKE_Fortran_COMPILER)
+ ENABLE_LANGUAGE (Fortran)
+
+ ADD_EXECUTABLE(libmmg2d_fortran_a
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg2d/adaptation_example0_fortran/main.F90 ${mmg2d_includes})
+
+ IF ( WIN32 AND ((NOT MINGW) AND USE_SCOTCH) )
+ my_add_link_flags(libmmg2d_fortran_a "/SAFESEH:NO")
+ ENDIF ( )
+
+ IF ( LIBMMG2D_STATIC )
+ TARGET_LINK_LIBRARIES(libmmg2d_fortran_a ${PROJECT_NAME}2d_a)
+ ELSEIF ( LIBMMG2D_SHARED )
+ TARGET_LINK_LIBRARIES(libmmg2d_fortran_a ${PROJECT_NAME}2d_so)
+ ELSE ()
+ MESSAGE(WARNING "You must activate the compilation of the static or"
+ " shared ${PROJECT_NAME} library to compile this tests." )
+ ENDIF ( )
+
+ INSTALL(TARGETS libmmg2d_fortran_a RUNTIME DESTINATION bin )
+
+ENDIF ( CMAKE_Fortran_COMPILER )
diff --git a/cmake/testing/libmmg3d_oldAPI_tests.cmake b/cmake/testing/libmmg3d_oldAPI_tests.cmake
new file mode 100644
index 000000000..1eefd8247
--- /dev/null
+++ b/cmake/testing/libmmg3d_oldAPI_tests.cmake
@@ -0,0 +1,84 @@
+ADD_EXECUTABLE(libmmg3d_example0_a_oldAPI
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/adaptation_example0/example0_a/main.c)
+
+ADD_EXECUTABLE(libmmg3d_example0_b_oldAPI
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/adaptation_example0/example0_b/main.c)
+
+ADD_EXECUTABLE(libmmg3d_example1_oldAPI
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/adaptation_example1/main.c)
+
+ADD_EXECUTABLE(libmmg3d_example2_oldAPI
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/adaptation_example2/main.c)
+
+ADD_EXECUTABLE(libmmg3d_example4_oldAPI
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/LagrangianMotion_example0/main.c)
+
+IF ( WIN32 AND ((NOT MINGW) AND USE_SCOTCH) )
+ my_add_link_flags(libmmg3d_example0_a_oldAPI "/SAFESEH:NO")
+ my_add_link_flags(libmmg3d_example0_b_oldAPI "/SAFESEH:NO")
+ my_add_link_flags(libmmg3d_example1_oldAPI "/SAFESEH:NO")
+ my_add_link_flags(libmmg3d_example2_oldAPI "/SAFESEH:NO")
+ my_add_link_flags(libmmg3d_example4_oldAPI "/SAFESEH:NO")
+ENDIF ( )
+
+IF ( LIBMMG3D_STATIC )
+
+ TARGET_LINK_LIBRARIES(libmmg3d_example0_a_oldAPI ${PROJECT_NAME}3d_a)
+ TARGET_LINK_LIBRARIES(libmmg3d_example0_b_oldAPI ${PROJECT_NAME}3d_a)
+ TARGET_LINK_LIBRARIES(libmmg3d_example1_oldAPI ${PROJECT_NAME}3d_a)
+ TARGET_LINK_LIBRARIES(libmmg3d_example2_oldAPI ${PROJECT_NAME}3d_a)
+ TARGET_LINK_LIBRARIES(libmmg3d_example4_oldAPI ${PROJECT_NAME}3d_a)
+
+ELSEIF ( LIBMMG3D_SHARED )
+ TARGET_LINK_LIBRARIES(libmmg3d_example0_a_oldAPI ${PROJECT_NAME}3d_so)
+ TARGET_LINK_LIBRARIES(libmmg3d_example0_b_oldAPI ${PROJECT_NAME}3d_so)
+ TARGET_LINK_LIBRARIES(libmmg3d_example1_oldAPI ${PROJECT_NAME}3d_so)
+ TARGET_LINK_LIBRARIES(libmmg3d_example2_oldAPI ${PROJECT_NAME}3d_so)
+ TARGET_LINK_LIBRARIES(libmmg3d_example4_oldAPI ${PROJECT_NAME}3d_so)
+
+ELSE ()
+ MESSAGE(WARNING "You must activate the compilation of the static or"
+ " shared ${PROJECT_NAME} library to compile this tests." )
+ENDIF ()
+
+INSTALL(TARGETS libmmg3d_example0_a_oldAPI RUNTIME DESTINATION bin )
+INSTALL(TARGETS libmmg3d_example0_b_oldAPI RUNTIME DESTINATION bin )
+INSTALL(TARGETS libmmg3d_example1_oldAPI RUNTIME DESTINATION bin )
+INSTALL(TARGETS libmmg3d_example2_oldAPI RUNTIME DESTINATION bin )
+INSTALL(TARGETS libmmg3d_example4_oldAPI RUNTIME DESTINATION bin )
+
+###############################################################################
+#####
+##### Fortran Tests
+#####
+###############################################################################
+IF (CMAKE_Fortran_COMPILER)
+ ENABLE_LANGUAGE (Fortran)
+
+ ADD_EXECUTABLE(libmmg3d_fortran_a_oldAPI
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/adaptation_example0_fortran/example0_a/main.F90)
+
+ ADD_EXECUTABLE(libmmg3d_fortran_b_oldAPI
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/adaptation_example0_fortran/example0_b/main.F90)
+
+ IF ( WIN32 AND ((NOT MINGW) AND USE_SCOTCH) )
+ my_add_link_flags(libmmg3d_fortran_a_oldAPI "/SAFESEH:NO")
+ my_add_link_flags(libmmg3d_fortran_b_oldAPI "/SAFESEH:NO")
+ ENDIF ( )
+
+ IF ( LIBMMG3D_STATIC )
+
+ TARGET_LINK_LIBRARIES(libmmg3d_fortran_a_oldAPI ${PROJECT_NAME}3d_a)
+ TARGET_LINK_LIBRARIES(libmmg3d_fortran_b_oldAPI ${PROJECT_NAME}3d_a)
+
+ ELSE ( )
+
+ TARGET_LINK_LIBRARIES(libmmg3d_fortran_a_oldAPI ${PROJECT_NAME}3d_so)
+ TARGET_LINK_LIBRARIES(libmmg3d_fortran_b_oldAPI ${PROJECT_NAME}3d_so)
+
+ ENDIF ()
+
+ INSTALL(TARGETS libmmg3d_fortran_b_oldAPI RUNTIME DESTINATION bin )
+ INSTALL(TARGETS libmmg3d_fortran_a_oldAPI RUNTIME DESTINATION bin )
+
+ENDIF()
diff --git a/cmake/testing/libmmg3d_tests.cmake b/cmake/testing/libmmg3d_tests.cmake
new file mode 100644
index 000000000..d5c734534
--- /dev/null
+++ b/cmake/testing/libmmg3d_tests.cmake
@@ -0,0 +1,104 @@
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+
+###############################################################################
+#####
+##### C Tests
+#####
+###############################################################################
+
+ADD_EXECUTABLE(libmmg3d_example0_a
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/adaptation_example0/example0_a/main.c ${mmg3d_includes})
+
+ADD_EXECUTABLE(libmmg3d_example0_b
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/adaptation_example0/example0_b/main.c ${mmg3d_includes})
+
+ADD_EXECUTABLE(libmmg3d_example1
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/adaptation_example1/main.c ${mmg3d_includes})
+
+ADD_EXECUTABLE(libmmg3d_example2
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/adaptation_example2/main.c ${mmg3d_includes})
+
+ADD_EXECUTABLE(libmmg3d_example4
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/LagrangianMotion_example0/main.c ${mmg3d_includes})
+
+ADD_EXECUTABLE(libmmg3d_example5
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/IsosurfDiscretization_example0/main.c ${mmg3d_includes})
+
+ IF ( WIN32 AND ((NOT MINGW) AND USE_SCOTCH) )
+ my_add_link_flags(libmmg3d_example0_a "/SAFESEH:NO")
+ my_add_link_flags(libmmg3d_example0_b "/SAFESEH:NO")
+ my_add_link_flags(libmmg3d_example1 "/SAFESEH:NO")
+ my_add_link_flags(libmmg3d_example2 "/SAFESEH:NO")
+ my_add_link_flags(libmmg3d_example4 "/SAFESEH:NO")
+ my_add_link_flags(libmmg3d_example5 "/SAFESEH:NO")
+ ENDIF ( )
+
+IF ( LIBMMG3D_STATIC )
+
+ TARGET_LINK_LIBRARIES(libmmg3d_example0_a ${PROJECT_NAME}3d_a)
+ TARGET_LINK_LIBRARIES(libmmg3d_example0_b ${PROJECT_NAME}3d_a)
+ TARGET_LINK_LIBRARIES(libmmg3d_example1 ${PROJECT_NAME}3d_a)
+ TARGET_LINK_LIBRARIES(libmmg3d_example2 ${PROJECT_NAME}3d_a)
+ TARGET_LINK_LIBRARIES(libmmg3d_example4 ${PROJECT_NAME}3d_a)
+ TARGET_LINK_LIBRARIES(libmmg3d_example5 ${PROJECT_NAME}3d_a)
+
+ELSEIF ( LIBMMG3D_SHARED )
+
+ TARGET_LINK_LIBRARIES(libmmg3d_example0_a ${PROJECT_NAME}3d_so)
+ TARGET_LINK_LIBRARIES(libmmg3d_example0_b ${PROJECT_NAME}3d_so)
+ TARGET_LINK_LIBRARIES(libmmg3d_example1 ${PROJECT_NAME}3d_so)
+ TARGET_LINK_LIBRARIES(libmmg3d_example2 ${PROJECT_NAME}3d_so)
+ TARGET_LINK_LIBRARIES(libmmg3d_example4 ${PROJECT_NAME}3d_so)
+ TARGET_LINK_LIBRARIES(libmmg3d_example5 ${PROJECT_NAME}3d_so)
+
+ELSE ()
+ MESSAGE(WARNING "You must activate the compilation of the static or"
+ " shared ${PROJECT_NAME} library to compile this tests." )
+ENDIF ()
+
+INSTALL(TARGETS libmmg3d_example0_a RUNTIME DESTINATION bin )
+INSTALL(TARGETS libmmg3d_example0_b RUNTIME DESTINATION bin )
+INSTALL(TARGETS libmmg3d_example1 RUNTIME DESTINATION bin )
+INSTALL(TARGETS libmmg3d_example2 RUNTIME DESTINATION bin )
+INSTALL(TARGETS libmmg3d_example4 RUNTIME DESTINATION bin )
+INSTALL(TARGETS libmmg3d_example5 RUNTIME DESTINATION bin )
+
+###############################################################################
+#####
+##### Fortran Tests
+#####
+###############################################################################
+IF (CMAKE_Fortran_COMPILER)
+ ENABLE_LANGUAGE (Fortran)
+
+ ADD_EXECUTABLE(libmmg3d_fortran_a
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/adaptation_example0_fortran/example0_a/main.F90 ${mmg3d_includes})
+
+ ADD_EXECUTABLE(libmmg3d_fortran_b
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg3d/adaptation_example0_fortran/example0_b/main.F90 ${mmg3d_includes})
+
+ IF ( WIN32 AND ((NOT MINGW) AND USE_SCOTCH) )
+ my_add_link_flags(libmmg3d_fortran_a "/SAFESEH:NO")
+ my_add_link_flags(libmmg3d_fortran_b "/SAFESEH:NO")
+ ENDIF ( )
+
+ IF ( LIBMMG3D_STATIC )
+
+ TARGET_LINK_LIBRARIES(libmmg3d_fortran_a ${PROJECT_NAME}3d_a)
+ TARGET_LINK_LIBRARIES(libmmg3d_fortran_b ${PROJECT_NAME}3d_a)
+
+ ELSEIF ( LIBMMG3D_SHARED )
+
+ TARGET_LINK_LIBRARIES(libmmg3d_fortran_a ${PROJECT_NAME}3d_so)
+ TARGET_LINK_LIBRARIES(libmmg3d_fortran_b ${PROJECT_NAME}3d_so)
+
+ ELSE ()
+ MESSAGE(WARNING "You must activate the compilation of the static or"
+ " shared ${PROJECT_NAME} library to compile this tests." )
+ ENDIF ()
+
+
+ INSTALL(TARGETS libmmg3d_fortran_b RUNTIME DESTINATION bin )
+ INSTALL(TARGETS libmmg3d_fortran_a RUNTIME DESTINATION bin )
+
+ENDIF (CMAKE_Fortran_COMPILER)
diff --git a/cmake/testing/libmmg_tests.cmake b/cmake/testing/libmmg_tests.cmake
new file mode 100644
index 000000000..ec8c5b016
--- /dev/null
+++ b/cmake/testing/libmmg_tests.cmake
@@ -0,0 +1,62 @@
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+
+###############################################################################
+#####
+##### C Tests
+#####
+###############################################################################
+
+ADD_EXECUTABLE(libmmg_example0_a
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg/example0/main.c ${mmg_includes})
+
+IF ( WIN32 AND NOT MINGW AND USE_SCOTCH )
+ my_add_link_flags(libmmg_example0_a "/SAFESEH:NO")
+ENDIF ( )
+
+IF ( LIBMMG_STATIC )
+
+ TARGET_LINK_LIBRARIES(libmmg_example0_a ${PROJECT_NAME}_a)
+
+ELSEIF ( LIBMMG_SHARED )
+
+ TARGET_LINK_LIBRARIES(libmmg_example0_a ${PROJECT_NAME}_so)
+
+ELSE ()
+ MESSAGE(WARNING "You must activate the compilation of the static or"
+ " shared ${PROJECT_NAME} library to compile this tests." )
+ENDIF ()
+
+INSTALL(TARGETS libmmg_example0_a RUNTIME DESTINATION bin )
+
+###############################################################################
+#####
+##### Fortran Tests
+#####
+###############################################################################
+IF (CMAKE_Fortran_COMPILER)
+ ENABLE_LANGUAGE (Fortran)
+
+ ADD_EXECUTABLE(libmmg_fortran_a
+ ${CMAKE_SOURCE_DIR}/libexamples/mmg/example0_fortran/main.F90
+ ${mmg_includes} ${mmg2d_includes} ${mmgs_includes} ${mmg3d_includes})
+
+ IF ( WIN32 AND NOT MINGW AND USE_SCOTCH )
+ my_add_link_flags(libmmg_fortran_a "/SAFESEH:NO")
+ ENDIF ( )
+
+ IF ( LIBMMG_STATIC )
+
+ TARGET_LINK_LIBRARIES(libmmg_fortran_a ${PROJECT_NAME}_a)
+
+ ELSEIF ( LIBMMG_SHARED )
+
+ TARGET_LINK_LIBRARIES(libmmg_fortran_a ${PROJECT_NAME}_so)
+
+ ELSE ()
+ MESSAGE(WARNING "You must activate the compilation of the static or"
+ " shared ${PROJECT_NAME} library to compile this tests." )
+ ENDIF ()
+
+ INSTALL(TARGETS libmmg_fortran_a RUNTIME DESTINATION bin )
+
+ENDIF (CMAKE_Fortran_COMPILER)
diff --git a/cmake/testing/libmmgs_tests.cmake b/cmake/testing/libmmgs_tests.cmake
new file mode 100644
index 000000000..61e024d44
--- /dev/null
+++ b/cmake/testing/libmmgs_tests.cmake
@@ -0,0 +1,65 @@
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+
+###############################################################################
+#####
+##### C Tests
+#####
+###############################################################################
+
+ADD_EXECUTABLE(libmmgs_example0
+ ${CMAKE_SOURCE_DIR}/libexamples/mmgs/adaptation_example0/main.c ${mmgs_includes})
+
+ADD_EXECUTABLE(libmmgs_example1
+ ${CMAKE_SOURCE_DIR}/libexamples/mmgs/adaptation_example1/main.c ${mmgs_includes})
+
+ IF ( WIN32 AND ((NOT MINGW) AND USE_SCOTCH) )
+ my_add_link_flags(libmmgs_example0 "/SAFESEH:NO")
+ my_add_link_flags(libmmgs_example1 "/SAFESEH:NO")
+ ENDIF ( )
+
+IF ( LIBMMGS_STATIC )
+
+ TARGET_LINK_LIBRARIES(libmmgs_example0 ${PROJECT_NAME}s_a)
+ TARGET_LINK_LIBRARIES(libmmgs_example1 ${PROJECT_NAME}s_a)
+
+ELSEIF ( LIBMMGS_SHARED )
+
+ TARGET_LINK_LIBRARIES(libmmgs_example0 ${PROJECT_NAME}s_so)
+ TARGET_LINK_LIBRARIES(libmmgs_example1 ${PROJECT_NAME}s_so)
+
+ELSE ()
+ MESSAGE(WARNING "You must activate the compilation of the static or"
+ " shared ${PROJECT_NAME} library to compile this tests." )
+ENDIF ()
+
+INSTALL(TARGETS libmmgs_example0 RUNTIME DESTINATION bin )
+INSTALL(TARGETS libmmgs_example1 RUNTIME DESTINATION bin )
+
+###############################################################################
+#####
+##### Fortran Tests
+#####
+###############################################################################
+
+IF (CMAKE_Fortran_COMPILER)
+ ENABLE_LANGUAGE (Fortran)
+
+ ADD_EXECUTABLE(libmmgs_fortran
+ ${CMAKE_SOURCE_DIR}/libexamples/mmgs/adaptation_example0_fortran/main.F90 ${mmgs_includes})
+
+ IF ( WIN32 AND ((NOT MINGW) AND USE_SCOTCH) )
+ my_add_link_flags(libmmgs_fortran "/SAFESEH:NO")
+ ENDIF ( )
+
+ IF ( LIBMMGS_STATIC )
+ TARGET_LINK_LIBRARIES(libmmgs_fortran ${PROJECT_NAME}s_a)
+ ELSEIF ( LIBMMGS_SHARED )
+ TARGET_LINK_LIBRARIES(libmmgs_fortran ${PROJECT_NAME}s_so)
+ ELSE ()
+ MESSAGE(WARNING "You must activate the compilation of the static or"
+ " shared ${PROJECT_NAME} library to compile this tests." )
+ ENDIF ( )
+
+ INSTALL(TARGETS libmmgs_fortran RUNTIME DESTINATION bin )
+
+ENDIF ( CMAKE_Fortran_COMPILER )
diff --git a/cmake/testing/mmg2d_tests.cmake b/cmake/testing/mmg2d_tests.cmake
new file mode 100644
index 000000000..d40b873f7
--- /dev/null
+++ b/cmake/testing/mmg2d_tests.cmake
@@ -0,0 +1,85 @@
+## =============================================================================
+## This file is part of the mmg software package for the tetrahedral
+## mesh modification.
+##** Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- .
+##
+## mmg is free software: you can redistribute it and/or modify it
+## under the terms of the GNU Lesser General Public License as published
+## by the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## mmg is distributed in the hope that it will be useful, but WITHOUT
+## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+## FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+## License for more details.
+##
+## You should have received a copy of the GNU Lesser General Public
+## License and of the GNU General Public License along with mmg (in
+## files COPYING.LESSER and COPYING). If not, see
+## . Please read their terms carefully and
+## use this copy of the mmg distribution only if you accept them.
+## =============================================================================
+
+###############################################################################
+#####
+##### Continuous Integration
+#####
+###############################################################################
+
+# Simple test: must already pass
+ADD_TEST(NAME Circle
+ COMMAND ${EXECUT_MMG2D} -v 5
+ ${MMG2D_CI_TESTS}/Circle/cercle
+ -out ${MMG2D_CI_TESTS}/Circle/cercle.o.meshb)
+
+###############################################################################
+#####
+##### Isotropic cases
+#####
+###############################################################################
+ADD_TEST(NAME SquareIso
+ COMMAND ${EXECUT_MMG2D} -v 5
+ ${MMG2D_CI_TESTS}/SquareIso/carretest
+ -out ${MMG2D_CI_TESTS}/SquareIso/carretest.o.meshb)
+
+####### -nosurf option
+ADD_TEST(NAME 2squares
+ COMMAND ${EXECUT_MMG2D} -msh 2 -hmax 1 -nosurf -v 5
+ ${MMG2D_CI_TESTS}/2squares/2squares
+ -out ${MMG2D_CI_TESTS}/2squares/2squares.o.meshb)
+
+
+###############################################################################
+#####
+##### Anisotropic cases
+#####
+###############################################################################
+ADD_TEST(NAME SquareAniso
+ COMMAND ${EXECUT_MMG2D} -v 5
+ ${MMG2D_CI_TESTS}/SquareAniso/adap1
+ -out ${MMG2D_CI_TESTS}/SquareAniso/adap1.o.meshb)
+
+###############################################################################
+#####
+##### Mesh generation
+#####
+###############################################################################
+ADD_TEST(NAME SquareGeneration
+ COMMAND ${EXECUT_MMG2D} -v 5
+ ${MMG2D_CI_TESTS}/SquareGeneration/carretest
+ -out ${MMG2D_CI_TESTS}/SquareGeneration/carretest.o.meshb)
+
+###############################################################################
+#####
+##### Implicit domain discretization
+#####
+###############################################################################
+#ADD_TEST(NAME LSDiscretization
+# COMMAND ${EXECUT_MMG2D} -v 5 -ls
+# ${MMG2D_CI_TESTS}/LSDiscretization/dom
+# -out ${MMG2D_CI_TESTS}/LSDiscretization/dom.o.meshb)
+#
+#ADD_TEST(NAME LSDiscretization2
+# COMMAND ${EXECUT_MMG2D} -v 5 -ls
+# ${MMG2D_CI_TESTS}/LSDiscretization/nacai
+# -out ${MMG2D_CI_TESTS}/LSDiscretization/nacai.o.meshb)
diff --git a/cmake/testing/mmg3d_rerun_tests.cmake b/cmake/testing/mmg3d_rerun_tests.cmake
index e8ebfa2a4..b02bc06ee 100644
--- a/cmake/testing/mmg3d_rerun_tests.cmake
+++ b/cmake/testing/mmg3d_rerun_tests.cmake
@@ -1,7 +1,7 @@
## =============================================================================
## This file is part of the mmg software package for the tetrahedral
## mesh modification.
-## Copyright (c) Inria - IMB (Université de Bordeaux) - LJLL (UPMC), 2004- .
+##** Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- .
##
## mmg is free software: you can redistribute it and/or modify it
## under the terms of the GNU Lesser General Public License as published
@@ -44,36 +44,36 @@ ADD_TEST(NAME SimpleCube2
# metric (h, h/2, h/4, h/8 and h/16)
#---First with hmin=hmax
ADD_TEST(NAME CubeIso_h_hminMax2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/CubeIso_h_hminMax/CubeIso0.1.o -hmax 0.1 -hmin 0.1
-out ${MMG3D_CI_TESTS}/CubeIso_h_hminMax/CubeIso0.1.o.o.meshb)
ADD_TEST(NAME CubeIso_0.5h_hminMax2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/CubeIso_0.5h_hminMax/CubeIso0.1.o -hmax 0.05 -hmin 0.05
-out ${MMG3D_CI_TESTS}/CubeIso_0.5h_hminMax/CubeIso0.1.o.o.meshb)
ADD_TEST(NAME CubeIso_0.25h_hminMax2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/CubeIso_0.25h_hminMax/CubeIso0.1.o -hmax 0.025 -hmin 0.025
-out ${MMG3D_CI_TESTS}/CubeIso_0.25h_hminMax/CubeIso0.1.o.o.meshb)
#ADD_TEST(NAME CubeIso_0.125h_hminMax
-# COMMAND ${EXECUT_MMG3D} -v 5
+# COMMAND ${EXECUT_MMG3D}
# ${MMG3D_CI_TESTS}/CubeIso_0.125h_hminMax/CubeIso0.1 -hmax 0.0125 -hmin 0.0125)
#---Second with sol file
ADD_TEST(NAME CubeIso_h_met2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/CubeIso_h_met/CubeIso0.1.o
-out ${MMG3D_CI_TESTS}/CubeIso_h_met/CubeIso0.1.o.o.meshb)
ADD_TEST(NAME CubeIso_0.5h_met2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/CubeIso_0.5h_met/CubeIso0.1.o
-out ${MMG3D_CI_TESTS}/CubeIso_0.5h_met/CubeIso0.1.o.o.meshb)
ADD_TEST(NAME CubeIso_0.25h_met2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/CubeIso_0.25h_met/CubeIso0.1.o
-out ${MMG3D_CI_TESTS}/CubeIso_0.25h_met/CubeIso0.1.o.o.meshb)
ADD_TEST(NAME CubeIso_0.125h_met2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/CubeIso_0.125h_met/CubeIso0.1.o
-out ${MMG3D_CI_TESTS}/CubeIso_0.125h_met/CubeIso0.1.o.o.meshb)
@@ -83,88 +83,88 @@ ADD_TEST(NAME CubeIso_0.125h_met2
# (h, h/2, h/4 and h/8)
##---First with hmin=hmax
#ADD_TEST(NAME SphereIso_h_hminMax
-# COMMAND ${EXECUT_MMG3D} -v 5
+# COMMAND ${EXECUT_MMG3D}
# ${MMG3D_CI_TESTS}/SphereIso_h_hminMax/SphereIso0.5
# -hmax 0.5 -hmin 0.5 -hausd 0.1)
#ADD_TEST(NAME SphereIso_0.5h_hminMax
-# COMMAND ${EXECUT_MMG3D} -v 5
+# COMMAND ${EXECUT_MMG3D}
# ${MMG3D_CI_TESTS}/SphereIso_0.5h_hminMax/SphereIso0.5
# -hmax 0.25 -hmin 0.25 -hausd 0.1)
#ADD_TEST(NAME SphereIso_0.25h_hminMax
-# COMMAND ${EXECUT_MMG3D} -v 5
+# COMMAND ${EXECUT_MMG3D}
# ${MMG3D_CI_TESTS}/SphereIso_0.25h_hminMax/SphereIso0.5
# -hmax 0.125 -hmin 0.125 -hausd 0.1)
#ADD_TEST(NAME SphereIso_0.125h_hminMax
-# COMMAND ${EXECUT_MMG3D} -v 5
+# COMMAND ${EXECUT_MMG3D}
# ${MMG3D_CI_TESTS}/SphereIso_0.125h_hminMax/SphereIso0.5
# -hmax 0.0625 -hmin 0.0625 -hausd 0.1)
#---Second with sol file
ADD_TEST(NAME SphereIso_h_met2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/SphereIso_h_met/SphereIso0.5.o -hausd 0.1
-out ${MMG3D_CI_TESTS}/SphereIso_h_met/SphereIso0.5.o.o.meshb)
ADD_TEST(NAME SphereIso_0.5h_met2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/SphereIso_0.5h_met/SphereIso0.5.o -hausd 0.1
-out ${MMG3D_CI_TESTS}/SphereIso_0.5h_met/SphereIso0.5.o.o.meshb)
ADD_TEST(NAME SphereIso_0.25h_met2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/SphereIso_0.25h_met/SphereIso0.5.o -hausd 0.1
-out ${MMG3D_CI_TESTS}/SphereIso_0.25h_met/SphereIso0.5.o.o.meshb)
ADD_TEST(NAME SphereIso_0.125h_met2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/SphereIso_0.125h_met/SphereIso0.5.o -hausd 0.1
-out ${MMG3D_CI_TESTS}/SphereIso_0.125h_met/SphereIso0.5.o.o.meshb)
# Check what happend when we unrefine a sphere of size smallh with a constant metric
# (2*smallh, 4*smallh and 8*smallh)
ADD_TEST(NAME SphereIso_2smallh_met2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/SphereIso_2smallh_met/SphereIso0.0625.o -hausd 0.1
-out ${MMG3D_CI_TESTS}/SphereIso_2smallh_met/SphereIso0.0625.o.o.meshb)
ADD_TEST(NAME SphereIso_4smallh_met2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/SphereIso_4smallh_met/SphereIso0.0625.o -hausd 0.1
-out ${MMG3D_CI_TESTS}/SphereIso_4smallh_met/SphereIso0.0625.o.o.meshb)
ADD_TEST(NAME SphereIso_8smallh_met2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/SphereIso_8smallh_met/SphereIso0.0625.o -hausd 0.1
-out ${MMG3D_CI_TESTS}/SphereIso_8smallh_met/SphereIso0.0625.o.o.meshb)
# Check what happend when we use hausdorff number to refine the skin and a big hgrad
# to have an inside of the initial size (0.5)
ADD_TEST(NAME SphereIso_h_hausd0.001_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/SphereIso_h_hausd0.001/SphereIso0.5.o -hausd 0.001 -hgrad 500
-out ${MMG3D_CI_TESTS}/SphereIso_h_hausd0.001/SphereIso0.5.o.o.meshb)
ADD_TEST(NAME SphereIso_h_hausd0.005_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/SphereIso_h_hausd0.005/SphereIso0.5.o -hausd 0.005 -hgrad 100
-out ${MMG3D_CI_TESTS}/SphereIso_h_hausd0.005/SphereIso0.5.o.o.meshb)
# Check what happend when we refine a cube whose skin has already the good size
ADD_TEST(NAME CubeSkin0.05_Inside0.4_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/CubeSkin0.05_Inside0.4/CubeSkin0.05.o
${MMG3D_CI_TESTS}/CubeSkin0.05_Inside0.4/CubeSkin0.05.o.o.meshb)
ADD_TEST(NAME CubeSkin0.1_Inside0.4_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/CubeSkin0.1_Inside0.4/CubeSkin0.1.o
${MMG3D_CI_TESTS}/CubeSkin0.1_Inside0.4/CubeSkin0.1.o.o.meshb)
ADD_TEST(NAME CubeSkin0.2_Inside0.4_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/CubeSkin0.2_Inside0.4/CubeSkin0.2.o
${MMG3D_CI_TESTS}/CubeSkin0.2_Inside0.4/CubeSkin0.2.o.o.meshb)
ADD_TEST(NAME CubeSkin0.0125_Inside0.125_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/CubeSkin0.0125_Inside0.125/CubeSkin0.125.o
-out ${MMG3D_CI_TESTS}/CubeSkin0.0125_Inside0.125/CubeSkin0.125.o.o.meshb)
ADD_TEST(NAME CubeSkin0.0125_Inside0.25_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/CubeSkin0.0125_Inside0.25/CubeSkin0.25.o
-out ${MMG3D_CI_TESTS}/CubeSkin0.0125_Inside0.25/CubeSkin0.25.o.o.meshb)
ADD_TEST(NAME CubeSkin0.0125_Inside0.5_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/CubeSkin0.0125_Inside0.5/CubeSkin0.5.o
${MMG3D_CI_TESTS}/CubeSkin0.0125_Inside0.5/CubeSkin0.5.o.o.meshb)
@@ -172,11 +172,11 @@ ADD_TEST(NAME CubeSkin0.0125_Inside0.5_2
# Check results on various meshes
# First: Meshes that we want unrefined
ADD_TEST(NAME Various_unref_Linkrods_met0.2_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/Various_unref_Linkrods_met0.2/linkrods.o -hausd 0.1
${MMG3D_CI_TESTS}/Various_unref_Linkrods_met0.2/linkrods.o.o.meshb)
ADD_TEST(NAME Various_unref_Linkrods_met0.2_hausd0.01_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/Various_unref_Linkrods_met0.2_hausd0.01/linkrods.o
-hausd 0.01
${MMG3D_CI_TESTS}/Various_unref_Linkrods_met0.2_hausd0.01/linkrods.o.o.meshb)
@@ -185,28 +185,28 @@ ADD_TEST(NAME Various_unref_Linkrods_met0.2_hausd0.01_2
# Second: Meshes that we want refined
ADD_TEST(NAME Various_ref_Linkrods_met0.05_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/Various_ref_Linkrods_met0.05/linkrods.o -hausd 0.1
${MMG3D_CI_TESTS}/Various_ref_Linkrods_met0.05/linkrods.o.o.meshb)
ADD_TEST(NAME Various_ref_Linkrods_met0.05_hausd0.01_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/Various_ref_Linkrods_met0.05_hausd0.01/linkrods.o
-hausd 0.01
${MMG3D_CI_TESTS}/Various_ref_Linkrods_met0.05_hausd0.01/linkrods.o.o.meshb)
ADD_TEST(NAME Various_ref_Linkrods_met0.05_hausd0.001_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/Various_ref_Linkrods_met0.05_hausd0.001/linkrods.o
-hausd 0.001
${MMG3D_CI_TESTS}/Various_ref_Linkrods_met0.05_hausd0.001/linkrods.o.o.meshb)
# Third: We refine some parts and unrefined others
ADD_TEST(NAME Various_refunref_Santa_met0.05_hausd0.001_ar90_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/Various_refunref_Santa_met0.05_hausd0.001_ar90/santa.o
-hausd 0.001 -ar 90
${MMG3D_CI_TESTS}/Various_refunref_Santa_met0.05_hausd0.001_ar90/santa.o.o.meshb)
ADD_TEST(NAME Various_refunref_Santa_met0.05_hausd0.0001_ar90_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/Various_refunref_Santa_met0.05_hausd0.0001_ar90/santa.o
-hausd 0.0001 -ar 90
${MMG3D_CI_TESTS}/Various_refunref_Santa_met0.05_hausd0.0001_ar90/santa.o.o.meshb)
@@ -214,13 +214,13 @@ ADD_TEST(NAME Various_refunref_Santa_met0.05_hausd0.0001_ar90_2
# 4: Refinment on a solution
IF ( PATTERN )
ADD_TEST(NAME Various_adpsol_hgrad1_M6Mach_Eps0.001_hmin0.001_hmax2_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/Various_adpsol_hgrad1_M6Mach_Eps0.001_hmin0.001_hmax2/M6.o
-sol ${MMG3D_CI_TESTS}/Various_adpsol_hgrad1_M6Mach_Eps0.001_hmin0.001_hmax2/M6.o.sol
-hausd 0.1 -ar 60 -hgrad 1
${MMG3D_CI_TESTS}/Various_adpsol_hgrad1_M6Mach_Eps0.001_hmin0.001_hmax2/M6.o.o.meshb)
ADD_TEST(NAME Various_adpsol_hgrad1_M6Mach_Eps0.0005_hmin0.0001_hmax3_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/Various_adpsol_hgrad1_M6Mach_Eps0.0005_hmin0.0001_hmax3/M6.o
-sol
${MMG3D_CI_TESTS}/Various_adpsol_hgrad1_M6Mach_Eps0.0005_hmin0.0001_hmax3/M6.o.sol
@@ -228,13 +228,13 @@ IF ( PATTERN )
${MMG3D_CI_TESTS}/Various_adpsol_hgrad1_M6Mach_Eps0.0005_hmin0.0001_hmax3/M6.o.o.meshb)
ELSE ()
ADD_TEST(NAME Various_adpsol_hgrad1_M6Mach_Eps0.001_hmin0.001_hmax2_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/Various_adpsol_hgrad1_M6Mach_Eps0.001_hmin0.001_hmax2/M6.o
-sol ${MMG3D_CI_TESTS}/Various_adpsol_hgrad1_M6Mach_Eps0.001_hmin0.001_hmax2/M6.o.sol
-hausd 0.1 -ar 60 -hgrad 1 -bucket 800
${MMG3D_CI_TESTS}/Various_adpsol_hgrad1_M6Mach_Eps0.001_hmin0.001_hmax2/M6.o.o.meshb)
ADD_TEST(NAME Various_adpsol_hgrad1_M6Mach_Eps0.0005_hmin0.0001_hmax3_2
- COMMAND ${EXECUT_MMG3D} -v 5
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/Various_adpsol_hgrad1_M6Mach_Eps0.0005_hmin0.0001_hmax3/M6.o
-sol
${MMG3D_CI_TESTS}/Various_adpsol_hgrad1_M6Mach_Eps0.0005_hmin0.0001_hmax3/M6.o.sol
diff --git a/cmake/testing/mmg3d_tests.cmake b/cmake/testing/mmg3d_tests.cmake
index 27de64464..c0b61811d 100644
--- a/cmake/testing/mmg3d_tests.cmake
+++ b/cmake/testing/mmg3d_tests.cmake
@@ -1,7 +1,7 @@
## =============================================================================
## This file is part of the mmg software package for the tetrahedral
## mesh modification.
-## Copyright (c) Inria - IMB (Université de Bordeaux) - LJLL (UPMC), 2004- .
+##** Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- .
##
## mmg is free software: you can redistribute it and/or modify it
## under the terms of the GNU Lesser General Public License as published
@@ -28,7 +28,7 @@
# Simple test: must already pass
ADD_TEST(NAME SimpleCube
- COMMAND ${EXECUT_MMG3D} -v 6 -d
+ COMMAND ${EXECUT_MMG3D}
${MMG3D_CI_TESTS}/Cube/cube
-out ${MMG3D_CI_TESTS}/Cube/cube.o.meshb)
@@ -43,14 +43,14 @@ FOREACH(EXEC ${LISTEXEC_MMG3D})
ADD_TEST(NAME LeakCheck_AbnormalEnd3_${EXEC}
COMMAND ${EXEC} -v 5
${MMG3D_CI_TESTS}/LeakCheck_AbnormalEnd3/d -sol
- ${MMG3D_CI_TESTS}/LeakCheck_AbnormalEnd3/dsol.sol -ls 2
+ ${MMG3D_CI_TESTS}/LeakCheck_AbnormalEnd3/dsol.sol -ls
-out ${MMG3D_CI_TESTS}/LeakCheck_AbnormalEnd3/d.o.meshb)
SET(passRegex "## ERROR: WRONG DATA TYPE OR WRONG SOLUTION NUMBER")
SET_PROPERTY(TEST LeakCheck_AbnormalEnd3_${EXEC}
PROPERTY PASS_REGULAR_EXPRESSION "${passRegex}")
#####
ADD_TEST(NAME LeakCheck_optLevelSet_${EXEC}
- COMMAND ${EXEC} -v 5 -ls 0 -hgrad 1.5
+ COMMAND ${EXEC} -v 5 -ls -hgrad 1.5
${MMG3D_CI_TESTS}/LeakCheck_optLevelSet/rect03d
-out ${MMG3D_CI_TESTS}/LeakCheck_optLevelSet/rect03d.o.meshb)
@@ -62,7 +62,7 @@ FOREACH(EXEC ${LISTEXEC_MMG3D})
###############################################################################
#####
ADD_TEST(NAME ChkBdry_optls_test4_${EXEC}
- COMMAND ${EXEC} -v 5 -ls -hgrad 1.5
+ COMMAND ${EXEC} -v 5 -ls -hgrad 1.5
-in ${MMG3D_CI_TESTS}/ChkBdry_optls_test4/test4
-sol ${MMG3D_CI_TESTS}/ChkBdry_optls_test4/test4.sol
-out ${MMG3D_CI_TESTS}/ChkBdry_optls_test4/test4.o.meshb)
@@ -75,35 +75,42 @@ FOREACH(EXEC ${LISTEXEC_MMG3D})
-out ${MMG3D_CI_TESTS}/ChkBdry_optls_temp/temp.o.meshb)
####
ADD_TEST(NAME ChkBdry_optls_temp2_${EXEC}
- COMMAND ${EXEC} -v 5 -ls -hmin 5 -hmax 6
+ COMMAND ${EXEC} -v 5 -ls -hmin 5 -hmax 6
-nr -hausd 0.5 -hgrad 1.2
-in ${MMG3D_CI_TESTS}/ChkBdry_optls_temp/temp
-sol ${MMG3D_CI_TESTS}/ChkBdry_optls_temp/temp.sol
-out ${MMG3D_CI_TESTS}/ChkBdry_optls_temp/temp.o.meshb)
#####
ADD_TEST(NAME ChkBdry_cube_${EXEC}
- COMMAND ${EXEC}
+ COMMAND ${EXEC} -v 5
${MMG3D_CI_TESTS}/ChkBdry_cube/cube)
#####
ADD_TEST(NAME ChkBdry_multidomCube_${EXEC}
- COMMAND ${EXEC} -hmax 0.1
+ COMMAND ${EXEC} -v 5 -hmax 0.1
${MMG3D_CI_TESTS}/ChkBdry_multidomCube/c)
#####
ADD_TEST(NAME ChkBdry_multidomCube2_${EXEC}
- COMMAND ${EXEC} -hmax 0.1
+ COMMAND ${EXEC} -v 5 -hmax 0.1
${MMG3D_CI_TESTS}/ChkBdry_multidomCube2/c)
#####
ADD_TEST(NAME ChkBdry_multidomCube3_${EXEC}
- COMMAND ${EXEC} -hmax 0.1
+ COMMAND ${EXEC} -v 5 -hmax 0.1
${MMG3D_CI_TESTS}/ChkBdry_multidomCube3/c)
- #####
- ADD_TEST(NAME HausdLoc_2Spheres${EXEC}
- COMMAND ${EXEC} -hgrad 2
- ${MMG3D_CI_TESTS}/HausdLoc_2Spheres/2spheres
- ${MMG3D_CI_TESTS}/HausdLoc_2Spheres/2spheres.o.meshb
- -hgrad 2
- )
+ ###############################################################################
+ #####
+ ##### Check Lagrangian motion option
+ #####
+ ###############################################################################
+ #####
+ IF ( USE_SUSCELAS )
+ ADD_TEST(NAME LagMotion1_tinyBoxt_${EXEC}
+ COMMAND ${EXEC} -v 5 -lag 1
+ -in ${MMG3D_CI_TESTS}/LagMotion1_tinyBoxt/tinyBoxt
+ -sol ${MMG3D_CI_TESTS}/LagMotion1_tinyBoxt/tinyBoxt.sol
+ -out ${MMG3D_CI_TESTS}/LagMotion1_tinyBoxt/tinyBoxt.o.meshb
+ )
+ ENDIF()
ENDFOREACH(EXEC)
@@ -320,13 +327,13 @@ IF ( LONG_TESTS )
# Test the Ls option
ADD_TEST(NAME OptLs_cube303d_hminMax_hgrad1.2_hausd0.005
- COMMAND ${EXECUT_MMG3D} -ls
+ COMMAND ${EXECUT_MMG3D} -v 5 -ls
${MMG3D_CI_TESTS}/OptLs_cube303d_hminMax_hgrad1.2_hausd0.005/cube303d
-sol ${MMG3D_CI_TESTS}/OptLs_cube303d_hminMax_hgrad1.2_hausd0.005/cube303d.sol
-hausd 0.005 -nr -hgrad 1.2 -hmin 0.001 -hmax 0.1
${MMG3D_CI_TESTS}/OptLs_cube303d_hminMax_hgrad1.2_hausd0.005/cube303d.o.meshb)
ADD_TEST(NAME OptLs_temp_hminMax_hgrad1.2_hausd0.1
- COMMAND ${EXECUT_MMG3D} -v 6 -d -ls
+ COMMAND ${EXECUT_MMG3D} -v 5 -ls
${MMG3D_CI_TESTS}/OptLs_temp_hminMax_hgrad1.2_hausd0.1/temp
-sol ${MMG3D_CI_TESTS}/OptLs_temp_hminMax_hgrad1.2_hausd0.1/temp.sol
-hausd 0.1 -nr -hgrad 1.2 -hmin 3 -hmax 4
@@ -335,17 +342,20 @@ IF ( LONG_TESTS )
# Test multi-domain remeshing
ADD_TEST(NAME MultiDom_Cube
- COMMAND ${EXECUT_MMG3D} -v 6 -hmax 0.02 ${MMG3D_CI_TESTS}/MultiDom_Cube/c
+ COMMAND ${EXECUT_MMG3D} -v 5 -hmax 0.02 ${MMG3D_CI_TESTS}/MultiDom_Cube/c
-out ${MMG3D_CI_TESTS}/MultiDom_Cube/c.o.meshb)
ADD_TEST(NAME MultiDom_Ellipse
- COMMAND ${EXECUT_MMG3D} -v 6 -hausd 0.0003 ${MMG3D_CI_TESTS}/MultiDom_Ellipse/c.d
+ COMMAND ${EXECUT_MMG3D} -v 5 -hausd 0.0003 ${MMG3D_CI_TESTS}/MultiDom_Ellipse/c.d
-out ${MMG3D_CI_TESTS}/MultiDom_Ellipse/c.d.o.meshb)
# Non-manifold test case
ADD_TEST(NAME NM_Cube
- COMMAND ${EXECUT_MMG3D} -v 6 -d -hmax 0.05 ${MMG3D_CI_TESTS}/NM_Cube/nm
+ COMMAND ${EXECUT_MMG3D} -v 5 -hmax 0.05 ${MMG3D_CI_TESTS}/NM_Cube/nm
-out ${MMG3D_CI_TESTS}/NM_Cube/nm.o.meshb)
+ ADD_TEST(NAME NM_Complex
+ COMMAND ${EXECUT_MMG3D} -v 5 ${MMG3D_CI_TESTS}/NM_Complex/nm4
+ -out ${MMG3D_CI_TESTS}/NM_Complex/nm4.o.mesh)
# Compare with a reference result when we run
@@ -353,6 +363,21 @@ IF ( LONG_TESTS )
# COMMAND ${EXECUT_MMG3D} -v 5
# ${MMG3D_CI_TESTS}/RefCube/cube) marre... a finir
+ ###############################################################################
+ #####
+ ##### Check Lagrangian motion option
+ #####
+ ###############################################################################
+ #####
+ IF ( USE_SUSCELAS )
+ ADD_TEST(NAME LagMotion1_boxt_${EXEC}
+ COMMAND ${EXEC} -v 5 -lag 1
+ -in ${MMG3D_CI_TESTS}/LagMotion1_boxt/boxt
+ -sol ${MMG3D_CI_TESTS}/LagMotion1_boxt/boxt.sol
+ -out ${MMG3D_CI_TESTS}/LagMotion1_boxt/boxt.o.meshb
+ )
+ ENDIF()
+
ENDIF()
###############################################################################
@@ -362,11 +387,11 @@ ENDIF()
###############################################################################
#####
#ADD_TEST(NAME BUG_OptLsSingularities
-# COMMAND ${EXECUT_MMG3D} -v 5 -ls
+# COMMAND ${EXECUT_MMG3D} -v 5 -ls
# ${MMG3D_CI_TESTS}/BUG_OptLsSingularities/test4
# ${MMG3D_CI_TESTS}/BUG_OptLsSingularities/test4.o.meshb)
#
#ADD_TEST(NAME TestDoSol_1
-# COMMAND ${EXECUT_MMG3D} -v 5 -hgrad -1 -hausd 1 -m 100
+# COMMAND ${EXECUT_MMG3D} -v 5 -hgrad -1 -hausd 1 -m 100
# ${MMG3D_CI_TESTS}/TestDoSol_1/66_shaver3.mesh
# ${MMG3D_CI_TESTS}/TestDoSol_1/66_shaver3.o.meshb)
diff --git a/cmake/testing/mmg_tests.cmake b/cmake/testing/mmg_tests.cmake
index 09446cfa7..536f0535a 100644
--- a/cmake/testing/mmg_tests.cmake
+++ b/cmake/testing/mmg_tests.cmake
@@ -1,7 +1,7 @@
## =============================================================================
## This file is part of the mmg software package for the tetrahedral
## mesh modification.
-## Copyright (c) Inria - IMB (Université de Bordeaux) - LJLL (UPMC), 2004- .
+##** Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- .
##
## mmg is free software: you can redistribute it and/or modify it
## under the terms of the GNU Lesser General Public License as published
@@ -22,11 +22,36 @@
FOREACH(EXEC ${LISTEXEC_MMG})
+ ##############################################################################
+ #####
+ ##### Aniso test case
+ #####
+ ##############################################################################
+ #####
ADD_TEST(NAME CubeVolAni_${EXEC}
- COMMAND ${EXEC} -v 6 -d
+ COMMAND ${EXEC} -v 5
${MMG_CI_TESTS}/CubeVolAni/cube
-out ${MMG_CI_TESTS}/CubeVolAni/cube.o.meshb)
+ ADD_TEST(NAME CubeVolAni2_${EXEC}
+ COMMAND ${EXEC} -v 5
+ ${MMG_CI_TESTS}/CubeVolAni2/cube
+ -out ${MMG_CI_TESTS}/CubeVolAni2/cube.o.meshb)
+
+ ADD_TEST(NAME SphereVolAni_${EXEC}
+ COMMAND ${EXEC} -v 5
+ ${MMG_CI_TESTS}/SphereVolAni/sphere
+ -out ${MMG_CI_TESTS}/SphereVolAni/sphere.o.meshb)
+
+ ADD_TEST(NAME TorusholesAni_${EXEC}
+ COMMAND ${EXEC} -v 5 -hgrad 1.15
+ ${MMG_CI_TESTS}/TorusholesAni/torusholes
+ -out ${MMG_CI_TESTS}/TorusholesAni/torusholes.o.meshb)
+
+ ADD_TEST(NAME TorusholesAni_chocCyl_${EXEC}
+ COMMAND ${EXEC} -v 5 -hgrad 1.15
+ ${MMG_CI_TESTS}/TorusholesAni_chocCyl/torusholesTiny
+ -out ${MMG_CI_TESTS}/TorusholesAni_chocCyl/torusholesTiny.o.meshb)
##############################################################################
#####
##### Check Memory Leak
@@ -67,6 +92,27 @@ FOREACH(EXEC ${LISTEXEC_MMG})
${MMG_CI_TESTS}/LeakCheck_args1/dsol.sol
-out ${MMG_CI_TESTS}/LeakCheck_args1/dout.meshb)
+ ##############################################################################
+ #####
+ ##### Check Local parameters
+ #####
+ ##############################################################################
+ #####
+ ADD_TEST(NAME HausdLoc_2Spheres${EXEC}
+ COMMAND ${EXEC} -v 5 -hgrad 2
+ ${MMG_CI_TESTS}/HausdLoc_2Spheres/2spheres
+ ${MMG_CI_TESTS}/HausdLoc_2Spheres/2spheres.o.meshb
+ -hgrad 2
+ )
+ #####
+ ADD_TEST(NAME hminmaxLoc_2Spheres${EXEC}
+ COMMAND ${EXEC} -v 5 -hgrad 2
+ ${MMG_CI_TESTS}/HausdLoc_2Spheres/2spheres
+ ${MMG_CI_TESTS}/HausdLoc_2Spheres/2spheres.o.meshb
+ -hgrad 2
+ )
+
+
##############################################################################
#####
##### Check Precision
@@ -83,4 +129,4 @@ FOREACH(EXEC ${LISTEXEC_MMG})
-in ${MMG_CI_TESTS}/MeshVersionFormatted2/d
-sol ${MMG_CI_TESTS}/MeshVersionFormatted2/dsol.sol)
-ENDFOREACH(EXEC)
\ No newline at end of file
+ENDFOREACH(EXEC)
diff --git a/cmake/testing/mmgs_tests.cmake b/cmake/testing/mmgs_tests.cmake
index 7311f9775..f9670ece9 100644
--- a/cmake/testing/mmgs_tests.cmake
+++ b/cmake/testing/mmgs_tests.cmake
@@ -1,7 +1,7 @@
## =============================================================================
## This file is part of the Mmg software package for the tetrahedral
## mesh modification.
-## Copyright (c) Inria - IMB (Université de Bordeaux) - LJLL (UPMC), 2004- .
+##** Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- .
##
## Mmg is free software: you can redistribute it and/or modify it
## under the terms of the GNU Lesser General Public License as published
@@ -28,17 +28,17 @@
# Simple tests: must already pass
ADD_TEST(NAME SimpleTeapot
- COMMAND ${EXECUT_MMGS} -v 6 -d
+ COMMAND ${EXECUT_MMGS}
${MMGS_CI_TESTS}/Teapot/teapot
-out ${MMGS_CI_TESTS}/Teapot/teapot.d.meshb)
ADD_TEST(NAME CubeAni
- COMMAND ${EXECUT_MMGS} -v 6 -d
+ COMMAND ${EXECUT_MMGS}
${MMGS_CI_TESTS}/CubeAni/cube
-out ${MMGS_CI_TESTS}/CubeAni/cube.d.meshb)
ADD_TEST(NAME SphereAni
- COMMAND ${EXECUT_MMGS} -v 6 -d
+ COMMAND ${EXECUT_MMGS}
${MMGS_CI_TESTS}/SphereAni/sphere
-out ${MMGS_CI_TESTS}/SphereAni/sphere.d.meshb)
@@ -55,7 +55,7 @@ ADD_TEST(NAME SphereAni
#####
###############################################################################
ADD_TEST(NAME Rhino_M
- COMMAND ${EXECUT_MMGS}
+ COMMAND ${EXECUT_MMGS} -v 5
${MMGS_CI_TESTS}/Rhino_M/rhino -hausd 1
-out ${MMGS_CI_TESTS}/Rhino_M/rhino.d.meshb)
@@ -65,7 +65,7 @@ ADD_TEST(NAME Rhino_M
#####
###############################################################################
ADD_TEST(NAME Cow_NM_hausd10
- COMMAND ${EXECUT_MMGS}
+ COMMAND ${EXECUT_MMGS} -v 5
${MMGS_CI_TESTS}/Cow_NM/cow -hausd 10
-out ${MMGS_CI_TESTS}/Cow_NM/cow.d.meshb)
@@ -76,11 +76,11 @@ ADD_TEST(NAME Cow_NM_hausd10
#####
###############################################################################
ADD_TEST(NAME Car_NM
- COMMAND ${EXECUT_MMGS}
+ COMMAND ${EXECUT_MMGS} -v 5
${MMGS_CI_TESTS}/Car_NM/car
-out ${MMGS_CI_TESTS}/Car_NM/car.d.meshb)
ADD_TEST(NAME Cow_NM_hausd20
- COMMAND ${EXECUT_MMGS}
+ COMMAND ${EXECUT_MMGS} -v 5
${MMGS_CI_TESTS}/Cow_NM/cow -hausd 20
-out ${MMGS_CI_TESTS}/Cow_NM/cow.d.meshb)
diff --git a/doc/doxygen/mmg2d/Doxyfile.in b/doc/doxygen/mmg2d/Doxyfile.in
new file mode 100644
index 000000000..1b9f29025
--- /dev/null
+++ b/doc/doxygen/mmg2d/Doxyfile.in
@@ -0,0 +1,2270 @@
+# Doxyfile 1.8.5
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project.
+#
+# All text after a double hash (##) is considered a comment and is placed in
+# front of the TAG it is preceding.
+#
+# All text after a single hash (#) is considered a comment and will be ignored.
+# The format is:
+# TAG = value [value, ...]
+# For lists, items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (\" \").
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all text
+# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
+# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
+# for the list of possible encodings.
+# The default value is: UTF-8.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+# double-quotes, unless you are using Doxywizard) that should identify the
+# project for which the documentation is generated. This name is used in the
+# title of most generated pages and in a few other places.
+# The default value is: My Project.
+
+PROJECT_NAME = mmg2d
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
+# could be handy for archiving the generated documentation or if some version
+# control system is used.
+
+PROJECT_NUMBER =
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer a
+# quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF =
+
+# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
+# the documentation. The maximum height of the logo should not exceed 55 pixels
+# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
+# to the output directory.
+
+PROJECT_LOGO =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
+# into which the generated documentation will be written. If a relative path is
+# entered, it will be relative to the location where doxygen was started. If
+# left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = .
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
+# directories (in 2 levels) under the output directory of each output format and
+# will distribute the generated files over these directories. Enabling this
+# option can be useful when feeding doxygen a huge amount of source files, where
+# putting all generated files in the same directory would otherwise causes
+# performance problems for the file system.
+# The default value is: NO.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# Possible values are: Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-
+# Traditional, Croatian, Czech, Danish, Dutch, English, Esperanto, Farsi,
+# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en,
+# Korean, Korean-en, Latvian, Norwegian, Macedonian, Persian, Polish,
+# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish,
+# Turkish, Ukrainian and Vietnamese.
+# The default value is: English.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
+# descriptions after the members that are listed in the file and class
+# documentation (similar to Javadoc). Set to NO to disable this.
+# The default value is: YES.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
+# description of a member or function before the detailed description
+#
+# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+# The default value is: YES.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator that is
+# used to form the text in various listings. Each string in this list, if found
+# as the leading text of the brief description, will be stripped from the text
+# and the result, after processing the whole list, is used as the annotated
+# text. Otherwise, the brief description is used as-is. If left blank, the
+# following values are used ($name is automatically replaced with the name of
+# the entity):The $name class, The $name widget, The $name file, is, provides,
+# specifies, contains, represents, a, an and the.
+
+ABBREVIATE_BRIEF =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# doxygen will generate a detailed section even if there is only a brief
+# description.
+# The default value is: NO.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+# The default value is: NO.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
+# before files name in the file list and in the header files. If set to NO the
+# shortest path that makes the file name unique will be used
+# The default value is: YES.
+
+FULL_PATH_NAMES = NO
+
+# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
+# Stripping is only done if one of the specified strings matches the left-hand
+# part of the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the path to
+# strip.
+#
+# Note that you can specify absolute paths here, but also relative paths, which
+# will be relative from the directory where doxygen is started.
+# This tag requires that the tag FULL_PATH_NAMES is set to YES.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
+# path mentioned in the documentation of a class, which tells the reader which
+# header file to include in order to use a class. If left blank only the name of
+# the header file containing the class definition is used. Otherwise one should
+# specify the list of include paths that are normally passed to the compiler
+# using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
+# less readable) file names. This can be useful is your file systems doesn't
+# support long names like on DOS, Mac, or CD-ROM.
+# The default value is: NO.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
+# first line (until the first dot) of a Javadoc-style comment as the brief
+# description. If set to NO, the Javadoc-style will behave just like regular Qt-
+# style comments (thus requiring an explicit @brief command for a brief
+# description.)
+# The default value is: NO.
+
+JAVADOC_AUTOBRIEF = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
+# line (until the first dot) of a Qt-style comment as the brief description. If
+# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
+# requiring an explicit \brief command for a brief description.)
+# The default value is: NO.
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
+# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
+# a brief description. This used to be the default behavior. The new default is
+# to treat a multi-line C++ comment block as a detailed description. Set this
+# tag to YES if you prefer the old behavior instead.
+#
+# Note that setting this tag to YES also means that rational rose comments are
+# not recognized any more.
+# The default value is: NO.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
+# documentation from any documented member that it re-implements.
+# The default value is: YES.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
+# new page for each member. If set to NO, the documentation of a member will be
+# part of the file/class/namespace that contains it.
+# The default value is: NO.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
+# uses this value to replace tabs by spaces in code fragments.
+# Minimum value: 1, maximum value: 16, default value: 4.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that act as commands in
+# the documentation. An alias has the form:
+# name=value
+# For example adding
+# "sideeffect=@par Side Effects:\n"
+# will allow you to put the command \sideeffect (or @sideeffect) in the
+# documentation, which will result in a user-defined paragraph with heading
+# "Side Effects:". You can put \n's in the value part of an alias to insert
+# newlines.
+
+ALIASES =
+
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding "class=itcl::class"
+# will allow you to use the command class in the itcl::class meaning.
+
+TCL_SUBST =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C. For
+# instance, some of the names that are used will be different. The list of all
+# members will be omitted, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_FOR_C = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
+# Python sources only. Doxygen will then generate output that is more tailored
+# for that language. For instance, namespaces will be presented as packages,
+# qualified scopes will look different, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources. Doxygen will then generate output that is tailored for Fortran.
+# The default value is: NO.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for VHDL.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given
+# extension. Doxygen has a built-in mapping, but you can override or extend it
+# using this tag. The format is ext=language, where ext is a file extension, and
+# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
+# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make
+# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
+# (default is Fortran), use: inc=Fortran f=C.
+#
+# Note For files without extension you can use no_extension as a placeholder.
+#
+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
+# the files are not read by doxygen.
+
+EXTENSION_MAPPING = c=C \
+ h=C
+
+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+# according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you can
+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+# case of backward compatibilities issues.
+# The default value is: YES.
+
+MARKDOWN_SUPPORT = YES
+
+# When enabled doxygen tries to link words that correspond to documented
+# classes, or namespaces to their corresponding documentation. Such a link can
+# be prevented in individual cases by by putting a % sign in front of the word
+# or globally by setting AUTOLINK_SUPPORT to NO.
+# The default value is: YES.
+
+AUTOLINK_SUPPORT = YES
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should set this
+# tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string);
+# versus func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+# The default value is: NO.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+# The default value is: NO.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
+# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
+# will parse them like normal C++ but will assume all classes use public instead
+# of private inheritance when no explicit protection keyword is present.
+# The default value is: NO.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate
+# getter and setter methods for a property. Setting this option to YES will make
+# doxygen to replace the get and set methods by a property in the documentation.
+# This will only work if the methods are indeed getting or setting a simple
+# type. If this is not the case, or you want to show the methods anyway, you
+# should set this option to NO.
+# The default value is: YES.
+
+IDL_PROPERTY_SUPPORT = NO
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+# The default value is: NO.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES to allow class member groups of the same type
+# (for instance a group of public functions) to be put as a subgroup of that
+# type (e.g. under the Public Functions section). Set it to NO to prevent
+# subgrouping. Alternatively, this can be done per class using the
+# \nosubgrouping command.
+# The default value is: YES.
+
+SUBGROUPING = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
+# are shown inside the group in which they are included (e.g. using \ingroup)
+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
+# and RTF).
+#
+# Note that this feature does not work in combination with
+# SEPARATE_MEMBER_PAGES.
+# The default value is: NO.
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
+# with only public data fields or simple typedef fields will be shown inline in
+# the documentation of the scope in which they are defined (i.e. file,
+# namespace, or group documentation), provided this scope is documented. If set
+# to NO, structs, classes, and unions are shown on a separate page (for HTML and
+# Man pages) or section (for LaTeX and RTF).
+# The default value is: NO.
+
+INLINE_SIMPLE_STRUCTS = NO
+
+# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
+# enum is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically be
+# useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+# The default value is: NO.
+
+TYPEDEF_HIDES_STRUCT = NO
+
+# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
+# cache is used to resolve symbols given their name and scope. Since this can be
+# an expensive process and often the same symbol appears multiple times in the
+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+# doxygen will become slower. If the cache is too large, memory is wasted. The
+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
+# symbols. At the end of a run doxygen will report the cache usage and suggest
+# the optimal cache size from a speed point of view.
+# Minimum value: 0, maximum value: 9, default value: 0.
+
+LOOKUP_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available. Private
+# class members and static file members will be hidden unless the
+# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
+# Note: This will also disable the warnings about undocumented members that are
+# normally produced when WARNINGS is set to YES.
+# The default value is: NO.
+
+EXTRACT_ALL = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
+# be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PRIVATE = YES
+
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# scope will be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PACKAGE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
+# included in the documentation.
+# The default value is: NO.
+
+EXTRACT_STATIC = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
+# locally in source files will be included in the documentation. If set to NO
+# only classes defined in header files are included. Does not have any effect
+# for Java sources.
+# The default value is: YES.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local methods,
+# which are defined in the implementation section but not in the interface are
+# included in the documentation. If set to NO only methods in the interface are
+# included.
+# The default value is: NO.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base name of
+# the file that contains the anonymous namespace. By default anonymous namespace
+# are hidden.
+# The default value is: NO.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+# undocumented members inside documented classes or files. If set to NO these
+# members will be included in the various overviews, but no documentation
+# section is generated. This option has no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy. If set
+# to NO these classes will be included in the various overviews. This option has
+# no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
+# (class|struct|union) declarations. If set to NO these declarations will be
+# included in the documentation.
+# The default value is: NO.
+
+HIDE_FRIEND_COMPOUNDS = YES
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
+# documentation blocks found inside the body of a function. If set to NO these
+# blocks will be appended to the function's detailed documentation block.
+# The default value is: NO.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation that is typed after a
+# \internal command is included. If the tag is set to NO then the documentation
+# will be excluded. Set it to YES to include the internal documentation.
+# The default value is: NO.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
+# names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+# The default value is: system dependent.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+# their full class and namespace scopes in the documentation. If set to YES the
+# scope will be hidden.
+# The default value is: NO.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+# the files that are included by a file in the documentation of that file.
+# The default value is: YES.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+# files with double quotes in the documentation rather than with sharp brackets.
+# The default value is: NO.
+
+FORCE_LOCAL_INCLUDES = NO
+
+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
+# documentation for inline members.
+# The default value is: YES.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
+# (detailed) documentation of file and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order.
+# The default value is: YES.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+# descriptions of file, namespace and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order.
+# The default value is: NO.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+# (brief and detailed) documentation of class members so that constructors and
+# destructors are listed first. If set to NO the constructors will appear in the
+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
+# member documentation.
+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
+# detailed member documentation.
+# The default value is: NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
+# of group names into alphabetical order. If set to NO the group names will
+# appear in their defined order.
+# The default value is: NO.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
+# fully-qualified names, including namespaces. If set to NO, the class list will
+# be sorted only by class name, not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the alphabetical
+# list.
+# The default value is: NO.
+
+SORT_BY_SCOPE_NAME = NO
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+# type resolution of all parameters of a function it will reject a match between
+# the prototype and the implementation of a member function even if there is
+# only one candidate or it is obvious which candidate to choose by doing a
+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+# accept a match between prototype and implementation in such cases.
+# The default value is: NO.
+
+STRICT_PROTO_MATCHING = NO
+
+# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
+# todo list. This list is created by putting \todo commands in the
+# documentation.
+# The default value is: YES.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
+# test list. This list is created by putting \test commands in the
+# documentation.
+# The default value is: YES.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
+# list. This list is created by putting \bug commands in the documentation.
+# The default value is: YES.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
+# the deprecated list. This list is created by putting \deprecated commands in
+# the documentation.
+# The default value is: YES.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional documentation
+# sections, marked by \if ... \endif and \cond
+# ... \endcond blocks.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
+# initial value of a variable or macro / define can have for it to appear in the
+# documentation. If the initializer consists of more lines than specified here
+# it will be hidden. Use a value of 0 to hide initializers completely. The
+# appearance of the value of individual variables and macros / defines can be
+# controlled using \showinitializer or \hideinitializer command in the
+# documentation regardless of this setting.
+# Minimum value: 0, maximum value: 10000, default value: 30.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
+# the bottom of the documentation of classes and structs. If set to YES the list
+# will mention the files that were used to generate the documentation.
+# The default value is: YES.
+
+SHOW_USED_FILES = YES
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
+# will remove the Files entry from the Quick Index and from the Folder Tree View
+# (if specified).
+# The default value is: YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
+# page. This will remove the Namespaces entry from the Quick Index and from the
+# Folder Tree View (if specified).
+# The default value is: YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command command input-file, where command is the value of the
+# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
+# by doxygen. Whatever the program writes to standard output is used as the file
+# version. For an example see the documentation.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. To create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option. You can
+# optionally specify a file name after the option, if omitted DoxygenLayout.xml
+# will be used as the name of the layout file.
+#
+# Note that if you run doxygen from a directory containing a file called
+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+# tag is left empty.
+
+LAYOUT_FILE =
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
+# the reference definitions. This must be a list of .bib files. The .bib
+# extension is automatically appended if omitted. This requires the bibtex tool
+# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
+# For LaTeX the style of the bibliography can be controlled using
+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
+# search path. Do not use file names with spaces, bibtex cannot handle them. See
+# also \cite for info how to create references.
+
+CITE_BIB_FILES =
+
+#---------------------------------------------------------------------------
+# Configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated to
+# standard output by doxygen. If QUIET is set to YES this implies that the
+# messages are off.
+# The default value is: NO.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
+# this implies that the warnings are on.
+#
+# Tip: Turn warnings on while writing the documentation.
+# The default value is: YES.
+
+WARNINGS = YES
+
+# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
+# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
+# will automatically be disabled.
+# The default value is: YES.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some parameters
+# in a documented function, or documenting parameters that don't exist or using
+# markup commands wrongly.
+# The default value is: YES.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
+# are documented, but have no documentation for their parameters or return
+# value. If set to NO doxygen will only warn about wrong or incomplete parameter
+# documentation, but not about the absence of documentation.
+# The default value is: NO.
+
+WARN_NO_PARAMDOC = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that doxygen
+# can produce. The string should contain the $file, $line, and $text tags, which
+# will be replaced by the file and line number from which the warning originated
+# and the warning text. Optionally the format may contain $version, which will
+# be replaced by the version of the file (if it could be obtained via
+# FILE_VERSION_FILTER)
+# The default value is: $file:$line: $text.
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning and error
+# messages should be written. If left blank the output is written to standard
+# error (stderr).
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag is used to specify the files and/or directories that contain
+# documented source files. You may enter file names like myfile.cpp or
+# directories like /usr/src/myproject. Separate the files or directories with
+# spaces.
+# Note: If this tag is empty the current directory is searched.
+
+INPUT = @CMAKE_CURRENT_SOURCE_DIR@/src/common @CMAKE_CURRENT_SOURCE_DIR@/src/mmg2d
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
+# documentation (see: http://www.gnu.org/software/libiconv) for the list of
+# possible encodings.
+# The default value is: UTF-8.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank the
+# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
+# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
+# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
+# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
+# *.qsf, *.as and *.js.
+
+FILE_PATTERNS = *.h \
+ *.c
+
+# The RECURSIVE tag can be used to specify whether or not subdirectories should
+# be searched for input files as well.
+# The default value is: NO.
+
+RECURSIVE = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+#
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+# The default value is: NO.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories for example use the pattern */test/*
+
+EXCLUDE_PATTERNS = */libmmg2df.h
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories use the pattern */test/*
+
+EXCLUDE_SYMBOLS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or directories
+# that contain example code fragments that are included (see the \include
+# command).
+
+EXAMPLE_PATH =../libexamples/mmg2d/example0 ../libexamples/mmg2d/example0_fortran ../libexamples/mmg2d/example1
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank all
+# files are included.
+
+EXAMPLE_PATTERNS =*.c
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude commands
+# irrespective of the value of the RECURSIVE tag.
+# The default value is: NO.
+
+EXAMPLE_RECURSIVE = YES
+
+# The IMAGE_PATH tag can be used to specify one or more files or directories
+# that contain images that are to be included in the documentation (see the
+# \image command).
+
+IMAGE_PATH = .
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command:
+#
+#
+#
+# where is the value of the INPUT_FILTER tag, and is the
+# name of an input file. Doxygen will then use the output that the filter
+# program writes to standard output. If FILTER_PATTERNS is specified, this tag
+# will be ignored.
+#
+# Note that the filter must not add or remove lines; it is applied before the
+# code is scanned, but not when the output code is generated. If lines are added
+# or removed, the anchors will not be placed correctly.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form: pattern=filter
+# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
+# patterns match the file name, INPUT_FILTER is applied.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER ) will also be used to filter the input files that are used for
+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# The default value is: NO.
+
+FILTER_SOURCE_FILES = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
+# it is also possible to disable source filtering for a specific pattern using
+# *.ext= (so without naming a filter).
+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
+
+FILTER_SOURCE_PATTERNS =
+
+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page
+# (index.html). This can be useful if you have a project on for instance GitHub
+# and want to reuse the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE =
+
+#---------------------------------------------------------------------------
+# Configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
+# generated. Documented entities will be cross-referenced with these sources.
+#
+# Note: To get rid of all source code in the generated output, make sure that
+# also VERBATIM_HEADERS is set to NO.
+# The default value is: NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body of functions,
+# classes and enums directly into the documentation.
+# The default value is: NO.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+# special comment blocks from generated source code fragments. Normal C, C++ and
+# Fortran comments will always remain visible.
+# The default value is: YES.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
+# function all documented functions referencing it will be listed.
+# The default value is: NO.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES then for each documented function
+# all documented entities called/used by that function will be listed.
+# The default value is: NO.
+
+REFERENCES_RELATION = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
+# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
+# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
+# link to the documentation.
+# The default value is: YES.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
+# source code will show a tooltip with additional information such as prototype,
+# brief description and links to the definition and documentation. Since this
+# will make the HTML file larger and loading of large files a bit slower, you
+# can opt to disable this feature.
+# The default value is: YES.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+SOURCE_TOOLTIPS = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code will
+# point to the HTML generated by the htags(1) tool instead of doxygen built-in
+# source browser. The htags tool is part of GNU's global source tagging system
+# (see http://www.gnu.org/software/global/global.html). You will need version
+# 4.8.6 or higher.
+#
+# To use it do the following:
+# - Install the latest version of global
+# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
+# - Make sure the INPUT points to the root of the source tree
+# - Run doxygen as normal
+#
+# Doxygen will invoke htags (and that will in turn invoke gtags), so these
+# tools must be available from the command line (i.e. in the search path).
+#
+# The result: instead of the source browser generated by doxygen, the links to
+# source code will now point to the output of htags.
+# The default value is: NO.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
+# verbatim copy of the header file for each class for which an include is
+# specified. Set to NO to disable this.
+# See also: Section \class.
+# The default value is: YES.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
+# compounds will be generated. Enable this if the project contains a lot of
+# classes, structs, unions or interfaces.
+# The default value is: YES.
+
+ALPHABETICAL_INDEX = NO
+
+# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
+# which the alphabetical index list will be split.
+# Minimum value: 1, maximum value: 20, default value: 5.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all classes will
+# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
+# can be used to specify a prefix (or a list of prefixes) that should be ignored
+# while generating the index headers.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
+# The default value is: YES.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
+# generated HTML page (for example: .htm, .php, .asp).
+# The default value is: .html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
+# each generated HTML page. If the tag is left blank doxygen will generate a
+# standard header.
+#
+# To get valid HTML the header file that includes any scripts and style sheets
+# that doxygen needs, which is dependent on the configuration options used (e.g.
+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
+# default header using
+# doxygen -w html new_header.html new_footer.html new_stylesheet.css
+# YourConfigFile
+# and then modify the file new_header.html. See also section "Doxygen usage"
+# for information on how to generate the default header that doxygen normally
+# uses.
+# Note: The header is subject to change so you typically have to regenerate the
+# default header when upgrading to a newer version of doxygen. For a description
+# of the possible markers and block names see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
+# generated HTML page. If the tag is left blank doxygen will generate a standard
+# footer. See HTML_HEADER for more information on how to generate a default
+# footer and what special commands can be used inside the footer. See also
+# section "Doxygen usage" for information on how to generate the default footer
+# that doxygen normally uses.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
+# sheet that is used by each HTML page. It can be used to fine-tune the look of
+# the HTML output. If left blank doxygen will generate a default style sheet.
+# See also section "Doxygen usage" for information on how to generate the style
+# sheet that doxygen normally uses.
+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
+# it is more robust and this tag (HTML_STYLESHEET) will in the future become
+# obsolete.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_STYLESHEET =
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
+# defined cascading style sheet that is included after the standard style sheets
+# created by doxygen. Using this option one can overrule certain style aspects.
+# This is preferred over using HTML_STYLESHEET since it does not replace the
+# standard style sheet and is therefor more robust against future updates.
+# Doxygen will copy the style sheet file to the output directory. For an example
+# see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_STYLESHEET =
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
+# files will be copied as-is; there are no commands or markers available.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_FILES =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
+# will adjust the colors in the stylesheet and background images according to
+# this color. Hue is specified as an angle on a colorwheel, see
+# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
+# purple, and 360 is red again.
+# Minimum value: 0, maximum value: 359, default value: 220.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_HUE = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
+# in the HTML output. For a value of 0 the output will use grayscales only. A
+# value of 255 will produce the most vivid colors.
+# Minimum value: 0, maximum value: 255, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_SAT = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
+# luminance component of the colors in the HTML output. Values below 100
+# gradually make the output lighter, whereas values above 100 make the output
+# darker. The value divided by 100 is the actual gamma applied, so 80 represents
+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
+# change the gamma.
+# Minimum value: 40, maximum value: 240, default value: 80.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_GAMMA = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_TIMESTAMP = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_DYNAMIC_SECTIONS = NO
+
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
+# shown in the various tree structured indices initially; the user can expand
+# and collapse entries dynamically later on. Doxygen will expand the tree to
+# such a level that at most the specified number of entries are visible (unless
+# a fully collapsed tree already exceeds this amount). So setting the number of
+# entries 1 will produce a full collapsed tree by default. 0 is a special value
+# representing an infinite number of entries and will result in a full expanded
+# tree by default.
+# Minimum value: 0, maximum value: 9999, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files will be
+# generated that can be used as input for Apple's Xcode 3 integrated development
+# environment (see: http://developer.apple.com/tools/xcode/), introduced with
+# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
+# Makefile in the HTML output directory. Running make will produce the docset in
+# that directory and running make install will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
+# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_DOCSET = NO
+
+# This tag determines the name of the docset feed. A documentation feed provides
+# an umbrella under which multiple documentation sets from a single provider
+# (such as a company or product suite) can be grouped.
+# The default value is: Doxygen generated docs.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# This tag specifies a string that should uniquely identify the documentation
+# set bundle. This should be a reverse domain-name style string, e.g.
+# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_BUNDLE_ID = org.doxygen.Project
+
+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+# The default value is: org.doxygen.Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+
+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
+# The default value is: Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_NAME = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
+# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
+# Windows.
+#
+# The HTML Help Workshop contains a compiler that can convert all HTML output
+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+# files are now used as the Windows 98 help format, and will replace the old
+# Windows help format (.hlp) on all Windows platforms in the future. Compressed
+# HTML files also contain an index, a table of contents, and you can search for
+# words in the documentation. The HTML workshop also contains a viewer for
+# compressed HTML files.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_HTMLHELP = NO
+
+# The CHM_FILE tag can be used to specify the file name of the resulting .chm
+# file. You can add a path in front of the file if the result should not be
+# written to the html output directory.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_FILE =
+
+# The HHC_LOCATION tag can be used to specify the location (absolute path
+# including file name) of the HTML help compiler ( hhc.exe). If non-empty
+# doxygen will try to run the HTML help compiler on the generated index.hhp.
+# The file has to be specified with full path.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+HHC_LOCATION =
+
+# The GENERATE_CHI flag controls if a separate .chi index file is generated (
+# YES) or that it should be included in the master .chm file ( NO).
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+GENERATE_CHI = NO
+
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
+# and project file content.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_INDEX_ENCODING =
+
+# The BINARY_TOC flag controls whether a binary table of contents is generated (
+# YES) or a normal table of contents ( NO) in the .chm file.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members to
+# the table of contents of the HTML help documentation and to the tree view.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
+# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
+# (.qch) of the generated HTML documentation.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
+# the file name of the resulting .qch file. The path specified is relative to
+# the HTML output folder.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
+# Project output. For more information please see Qt Help Project / Namespace
+# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_NAMESPACE =
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
+# Help Project output. For more information please see Qt Help Project / Virtual
+# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
+# folders).
+# The default value is: doc.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
+# filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's filter section matches. Qt Help Project / Filter Attributes (see:
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_SECT_FILTER_ATTRS =
+
+# The QHG_LOCATION tag can be used to specify the location of Qt's
+# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
+# generated .qhp file.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHG_LOCATION =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
+# generated, together with the HTML files, they form an Eclipse help plugin. To
+# install this plugin and make it available under the help contents menu in
+# Eclipse, the contents of the directory containing the HTML and XML files needs
+# to be copied into the plugins directory of eclipse. The name of the directory
+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
+# After copying Eclipse needs to be restarted before the help appears.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_ECLIPSEHELP = NO
+
+# A unique identifier for the Eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have this
+# name. Each documentation set should have its own identifier.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
+
+ECLIPSE_DOC_ID = org.doxygen.Project
+
+# If you want full control over the layout of the generated HTML pages it might
+# be necessary to disable the index and replace it with your own. The
+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
+# of each HTML page. A value of NO enables the index and the value YES disables
+# it. Since the tabs in the index contain the same information as the navigation
+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+DISABLE_INDEX = NO
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information. If the tag
+# value is set to YES, a side panel will be generated containing a tree-like
+# index structure (just like the one that is generated for HTML Help). For this
+# to work a browser that supports JavaScript, DHTML, CSS and frames is required
+# (i.e. any modern browser). Windows users are probably better off using the
+# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
+# further fine-tune the look of the index. As an example, the default style
+# sheet generated by doxygen has an example that shows how to put an image at
+# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
+# the same information as the tab index, you could consider setting
+# DISABLE_INDEX to YES when enabling this option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_TREEVIEW = YES
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
+# doxygen will group on one line in the generated HTML documentation.
+#
+# Note that a value of 0 will completely suppress the enum values from appearing
+# in the overview section.
+# Minimum value: 0, maximum value: 20, default value: 4.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
+# to set the initial width (in pixels) of the frame in which the tree is shown.
+# Minimum value: 0, maximum value: 1500, default value: 250.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+TREEVIEW_WIDTH = 250
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
+# external symbols imported via tag files in a separate window.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+EXT_LINKS_IN_WINDOW = NO
+
+# Use this tag to change the font size of LaTeX formulas included as images in
+# the HTML documentation. When you change the font size after a successful
+# doxygen run you need to manually remove any form_*.png images from the HTML
+# output directory to force them to be regenerated.
+# Minimum value: 8, maximum value: 50, default value: 10.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_FONTSIZE = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are not
+# supported properly for IE 6.0, but are supported on all modern browsers.
+#
+# Note that when changing this option you need to delete any form_*.png files in
+# the HTML output directory before the changes have effect.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_TRANSPARENT = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
+# http://www.mathjax.org) which uses client side Javascript for the rendering
+# instead of using prerendered bitmaps. Use this if you do not have LaTeX
+# installed or if you want to formulas look prettier in the HTML output. When
+# enabled you may also need to install MathJax separately and configure the path
+# to it using the MATHJAX_RELPATH option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+USE_MATHJAX = NO
+
+# When MathJax is enabled you can set the default output format to be used for
+# the MathJax output. See the MathJax site (see:
+# http://docs.mathjax.org/en/latest/output.html) for more details.
+# Possible values are: HTML-CSS (which is slower, but has the best
+# compatibility), NativeMML (i.e. MathML) and SVG.
+# The default value is: HTML-CSS.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_FORMAT = HTML-CSS
+
+# When MathJax is enabled you need to specify the location relative to the HTML
+# output directory using the MATHJAX_RELPATH option. The destination directory
+# should contain the MathJax.js script. For instance, if the mathjax directory
+# is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
+# Content Delivery Network so you can quickly see the result without installing
+# MathJax. However, it is strongly recommended to install a local copy of
+# MathJax from http://www.mathjax.org before deployment.
+# The default value is: http://cdn.mathjax.org/mathjax/latest.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
+# extension names that should be enabled during MathJax rendering. For example
+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_EXTENSIONS =
+
+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
+# of code that will be used on startup of the MathJax code. See the MathJax site
+# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+# example see the documentation.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_CODEFILE =
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
+# the HTML output. The underlying search engine uses javascript and DHTML and
+# should work on any modern browser. Note that when using HTML help
+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
+# there is already a search function so this one should typically be disabled.
+# For large projects the javascript based search engine can be slow, then
+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
+# search using the keyboard; to jump to the search box use + S
+# (what the is depends on the OS and browser, but it is typically
+# , /