...
 
Commits (1)

Too many changes to show.

To preserve performance only 247 of 247+ files are displayed.

########################
# Main configuration #
########################
if (DEFINED ENV{JENKINS})
set(CMAKE_BUILD_TYPE $ENV{BUILD} CACHE STRING "toto" FORCE)
endif ()
cmake_minimum_required(VERSION 2.6.4)
if (NOT DEFINED FORTRAN_INTERFACE)
endif ()
if (FORTRAN_INTERFACE)
endif ()
if ((NOT DEFINED FORTRAN_INTERFACE) OR (FORTRAN_INTERFACE))
project(PAMPA C Fortran CXX)
else ()
project(PAMPA C CXX)
endif ()
# Add CTest
enable_testing()
# Add modules
include(CMakeDependentOption)
include(CheckSymbolExists)
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeScripts)
set(CMAKE_Fortran_MODULE_DIRECTORY ${PROJECT_BINARY_DIR}/MOD)
# Define some variables which will be fill in with ccmake or cmake-gui
set(VALGRIND_EXE "/usr/bin/valgrind" CACHE TYPE "Valgrind with its path")
set(VALGRIND_ARGS "" CACHE TYPE "Valgrind arguments")
mark_as_advanced(VALGRIND_EXE VALGRIND_ARGS)
option(FORTRAN_INTERFACE "Build fortran interface to use PaMPA in fortran programs" OFF)
if (FORTRAN_INTERFACE)
add_definitions (-DNOT_DOXYGEN)
endif ()
# Temporary, to remove old configuration
if (DEFINED COMMON_PTHREAD)
unset (PTHREAD CACHE)
unset (COMMON_PTHREAD CACHE)
unset (PAMPA_PTHREAD CACHE)
endif ()
set (PTHREAD_LIST "None;IO;Comm;All")
set (PTHREAD "All" CACHE STRING "Pthread use level: possible values ${PTHREAD_LIST}")
set_property (CACHE PTHREAD PROPERTY STRINGS ${PTHREAD_LIST})
list (FIND PTHREAD_LIST ${PTHREAD} FND)
if (${FND} EQUAL -1)
message (FATAL_ERROR "Value for PTHREAD is not correct, you have to choose one item in the following list ${PTHREAD_LIST}")
endif ()
# Temporary, to remove old configuration
if (DEFINED COMM_MANUAL)
unset (COMM_MANUAL CACHE)
unset (COMM_TYPE CACHE)
endif ()
set (COMM_TYPE_LIST "Automatic;Point-to-point;Collective")
set (COMM_TYPE "Automatic" CACHE STRING "Communication type chosen to exhange data between subdomains: possible values ${COMM_TYPE_LIST}")
set_property (CACHE COMM_TYPE PROPERTY STRINGS ${COMM_TYPE_LIST})
list (FIND COMM_TYPE_LIST ${COMM_TYPE} FND)
if (${FND} EQUAL -1)
message (FATAL_ERROR "Value for COMM_TYPE is not correct, you have to choose one item in the following list ${COMM_TYPE_LIST}")
endif ()
if (COMM_TYPE STREQUAL "Point-to-point")
add_definitions (-DPAMPA_COMM_PTOP)
elseif (COMM_TYPE STREQUAL "Collective")
add_definitions (-DPAMPA_COMM_COLL)
endif ()
option (NETLOC "Netloc" ON)
if (NETLOC)
add_definitions (-DNETLOC)
set (NETLOC_HOME "" CACHE PATH "NETLOC home directory")
#find_package (NETLOC REQUIRED)
set (NETLOC_INCLUDE_DIR "")
set (NETLOC_LIBRARY "")
include_directories(${NETLOC_INCLUDE_DIR})
endif ()
option(PAMPA_RENAME "Rename internal function names" ON)
if (PAMPA_RENAME)
add_definitions (-DPAMPA_RENAME)
endif ()
option(PAMPA_ADAPT "Adapt functions" OFF)
if (PAMPA_ADAPT)
add_definitions (-DPAMPA_ADAPT)
endif ()
option(PAMPA_MULTILEVEL "Multilevel meshes" OFF)
option(COMMON_MEMORY_TRACE "Rename internal function names" OFF)
if (COMMON_MEMORY_TRACE)
add_definitions (-DCOMMON_MEMORY_TRACE)
endif ()
cmake_dependent_option(COMMON_MEMORY_USER_FILE "User file (defined as char PAMPA_memFilename[]) for memory logs" ON "COMMON_MEMORY_TRACE" OFF)
if (COMMON_MEMORY_USER_FILE)
add_definitions (-DCOMMON_MEMORY_USER_FILE)
endif ()
option(SAMPLES "Build samples" OFF)
if (SAMPLES)
set (SAMPLE_TYPE_LIST "All;Compounds;Units")
set (SAMPLE_TYPE "All" CACHE STRING "Choose which categories of samples: possible values ${SAMPLE_TYPE_LIST}")
set_property (CACHE SAMPLE_TYPE PROPERTY STRINGS ${SAMPLE_TYPE_LIST})
list (FIND SAMPLE_TYPE_LIST ${SAMPLE_TYPE} FND)
if (${FND} EQUAL -1)
message (FATAL_ERROR "Value for SAMPLE_TYPE is not correct, you have to choose one item in the following list ${SAMPLE_TYPE_LIST}")
endif ()
set (SAMPLE_PREFIX "pampa")
endif ()
option(PAMPA_BUILD_DOC "Build documentation for PaMPA" OFF)
option(PAMPA_BUILD_ALONE "Build PaMPA in one build folder" OFF)
mark_as_advanced(PAMPA_BUILD_DOC PAMPA_BUILD_ALONE)
#######################
# Find some libraries #
#######################
if (COMMON_COMPRESSION)
# BZIP2
find_package (BZip2)
message (STATUS "bzip2: ${BZIP2_FOUND}")
if (BZIP2_FOUND)
add_definitions (-DCOMMON_FILE_COMPRESS_BZ2)
include_directories(${BZIP2_INCLUDE_DIR})
#list (APPEND PAMPA_DEPENDENCIES ${BZIP2_LIBRARIES})
list (APPEND PAMPA_DEPENDENCIES ${BZIP2_LIBRARY} ${BZIP2_LIBRARIES})
endif (BZIP2_FOUND)
endif (COMMON_COMPRESSION)
# MMG3D4
option (PAMPA_MMG3D4 "Build PaMPA-MMG3D4 library" OFF)
cmake_dependent_option(PAMPA_MMG3D4_SCOTCH "If MMG3D4 is built with Scotch" ON "PAMPA_MMG3D4" OFF)
if (PAMPA_MMG3D4)
add_definitions (-DMMG3D4)
set (MMG3D4_HOME ${MMG3D4_HOME-INT} CACHE PATH "MMG3D4 home directory")
set (MMG3D4_LIBNAME ${MMG3D4_LIBNAME-INT} CACHE STRING "MMG3D4 library name")
find_package (MMG3D4 REQUIRED)
set(CMAKE_REQUIRED_INCLUDES ${MMG3D4_INCLUDE_DIR})
##set (CMAKE_REQUIRED_DEFINITIONS -DMMG3D4_REQUIRED)
#set (HAVE_MMG3D4_H "HAVE_MMG3D4_H")
#check_symbol_exists (MMG3D4_REQUIRED libmmg3d4.h HAVE_MMG3D4_H)
#if (NOT HAVE_MMG3D4_H)
# message (FATAL_ERROR " MMG3D4 wat not compiled with MMG3D4_REQUIRED option")
#endif ()
else ()
unset (MMG3D4_HOME CACHE)
unset (MMG3D4_LIBNAME CACHE)
endif ()
# MMG3D5
option (PAMPA_MMG3D5 "Build PaMPA-MMG3D5 library" OFF)
cmake_dependent_option(PAMPA_MMG3D5_SCOTCH "If MMG3D5 is built with Scotch" ON "PAMPA_MMG3D5" OFF)
if (PAMPA_MMG3D5)
add_definitions (-DMMG3D5)
set (MMG3D5_HOME ${MMG3D5_HOME-INT} CACHE PATH "MMG3D5 home directory")
set (MMG3D5_LIBNAME ${MMG3D5_LIBNAME-INT} CACHE STRING "MMG3D5 library name")
find_package (MMG3D5 REQUIRED)
else ()
unset (MMG3D5_HOME CACHE)
unset (MMG3D5_LIBNAME CACHE)
endif ()
# MMG3D
option (PAMPA_MMG3D "Build PaMPA-MMG3D library" OFF)
cmake_dependent_option(PAMPA_MMG3D_SCOTCH "If MMG3D is built with Scotch" ON "PAMPA_MMG3D" OFF)
if (PAMPA_MMG3D)
add_definitions (-DMMG3D)
set (MMG3D_HOME ${MMG3D_HOME-INT} CACHE PATH "MMG3D home directory")
set (MMG3D_LIBNAME ${MMG3D_LIBNAME-INT} CACHE STRING "MMG3D library name")
find_package (MMG3D REQUIRED)
else ()
unset (MMG3D_HOME CACHE)
unset (MMG3D_LIBNAME CACHE)
endif ()
# MSHINT
option (PAMPA_MSHINT "Build PaMPA-MSHINT library" OFF)
if (PAMPA_MSHINT)
add_definitions (-DMSHINT)
set (MSHINT_HOME ${MSHINT_HOME-INT} CACHE PATH "MSHINT home directory")
set (MSHINT_LIBNAME ${MSHINT_LIBNAME-INT} CACHE STRING "MSHINT library name")
find_package (MSHINT REQUIRED)
set (LIBMESH5_HOME ${LIBMESH5_HOME-INT} CACHE PATH "LIBMESH5 home directory")
set (LIBMESH5_LIBNAME ${LIBMESH5_LIBNAME-INT} CACHE STRING "LIBMESH5 library name")
find_package (LIBMESH5 REQUIRED)
else ()
unset (MSHINT_HOME CACHE)
unset (MSHINT_LIBNAME CACHE)
unset (LIBMESH5_HOME CACHE)
unset (LIBMESH5_LIBNAME CACHE)
endif ()
# TETGEN
option (PAMPA_TETGEN "Build PaMPA-TETGEN library" OFF)
if (PAMPA_TETGEN)
add_definitions (-DTETGEN -DTETLIBRARY)
set (TETGEN_HOME ${TETGEN_HOME-INT} CACHE PATH "TETGEN home directory")
set (TETGEN_LIBNAME ${TETGEN_LIBNAME-INT} CACHE STRING "TETGEN library name")
find_package (TETGEN REQUIRED)
set(CMAKE_REQUIRED_INCLUDES ${TETGEN_INCLUDE_DIR})
else ()
unset (TETGEN_HOME CACHE)
unset (TETGEN_LIBNAME CACHE)
endif ()
# AEROSOL
option (PAMPA_AEROSOL "Build PaMPA-AEROSOL library" OFF)
if (PAMPA_AEROSOL)
add_definitions (-DAEROSOL)
set (AEROSOL_HOME ${AEROSOL_HOME-INT} CACHE PATH "AEROSOL home directory")
find_package (AEROSOL REQUIRED)
else ()
unset (AEROSOL_HOME CACHE)
endif ()
# PT-Scotch
option (PTSCOTCH "Build PaMPA with PT-Scotch dependencies" ON)
if (PTSCOTCH)
add_definitions (-DPTSCOTCH)
set(PTSCOTCH_HOME "" CACHE PATH "PT-Scotch home directory")
find_package(PTSCOTCH REQUIRED)
include_directories(${PTSCOTCH_INCLUDE_DIR})
else ()
unset (PTSCOTCH_HOME CACHE)
endif ()
# MPI
set(MPI_COMPILER mpicc)
find_package(MPI REQUIRED)
include_directories(${MPI_INCLUDE_PATH})
if (MPI_C_LIBRARIES)
list (APPEND PAMPA_DEPENDENCIES ${MPI_C_LIBRARIES} m)
else ()
list (APPEND PAMPA_DEPENDENCIES ${MPI_LIBRARIES} m)
endif ()
if (PAMPA_BUILD_ALONE)
include_directories(${PAMPA_SOURCE_DIR}/include)
endif ()
# Pthread
if (NOT PTHREAD STREQUAL "None")
find_package(Threads REQUIRED)
if (NOT CMAKE_USE_PTHREADS_INIT) # if pthread was not found
message (FATAL_ERROR "Pthread are not available")
endif()
if (PTHREAD STREQUAL "IO" OR PTHREAD STREQUAL "All")
add_definitions(-DCOMMON_PTHREAD)
endif ()
if (PTHREAD STREQUAL "Comm" OR PTHREAD STREQUAL "All")
add_definitions(-DPAMPA_PTHREAD)
endif ()
list (APPEND PAMPA_DEPENDENCIES ${CMAKE_THREAD_LIBS_INIT})
endif ()
# Define PaMPA version
set(PAMPA_VERSION "1")
set(PAMPA_RELEASE "0")
set(PAMPA_PATCHLEVEL "0")
# Add some flags
add_definitions(-DPAMPA_VERSION=${PAMPA_VERSION} -DPAMPA_RELEASE=${PAMPA_RELEASE}
-DPAMPA_PATCHLEVEL=${PAMPA_PATCHLEVEL} -Drestrict=__restrict)
# Check CMake version
if (${CMAKE_VERSION} VERSION_LESS 2.8.4)
set (OLD_CMAKE 1)
endif ()
set (LIBRARY_OUTPUT_DIRECTORY ${PAMPA_SOURCE_DIR}/pampa_lib)
# SCM Version Option
option (SCM_VERSIONS "Get SCM Versions for softwares" OFF)
if (SCM_VERSIONS)
add_definitions(-DSCM_VERSIONS)
if (PTSCOTCH)
set(SCM_PTSCOTCH_HOME "" CACHE PATH "SCM PT-Scotch path")
list(APPEND VERSIONS_EXT_ARGS
PTSCOTCH:${SCM_PTSCOTCH_HOME}:${PTSCOTCH_LIBRARY},${SCOTCH_LIBRARY},${PTSCOTCH_EXTRA_LIBRARY})
list(APPEND VERSIONS_EXT_DEPS
${PTSCOTCH_LIBRARY} ${SCOTCH_LIBRARY} ${PTSCOTCH_EXTRA_LIBRARY})
endif ()
if (PAMPA_MMG3D4)
set(SCM_MMG3D4_HOME "" CACHE PATH "SCM MMG3D4 path")
list(APPEND VERSIONS_EXT_ARGS
MMG3D4:${SCM_MMG3D4_HOME}:${MMG3D4_LIBRARY})
list(APPEND VERSIONS_EXT_DEPS
${MMG3D4_LIBRARY})
endif ()
if (PAMPA_MMG3D5)
set(SCM_MMG3D5_HOME "" CACHE PATH "SCM MMG3D5 path")
list(APPEND VERSIONS_EXT_ARGS
MMG3D5:${SCM_MMG3D5_HOME}:${MMG3D5_LIBRARY})
list(APPEND VERSIONS_EXT_DEPS
${MMG3D5_LIBRARY})
endif ()
if (PAMPA_MMG3D)
set(SCM_MMG3D_HOME "" CACHE PATH "SCM MMG3D path")
list(APPEND VERSIONS_EXT_ARGS
MMG3D:${SCM_MMG3D_HOME}:${MMG3D_LIBRARY})
list(APPEND VERSIONS_EXT_DEPS
${MMG3D_LIBRARY})
endif ()
if (PAMPA_AEROSOL)
set(SCM_AEROSOL_HOME "" CACHE PATH "SCM Aerosol path")
list(APPEND VERSIONS_EXT_ARGS
AEROSOL:${SCM_AEROSOL_HOME}:${AEROSOL_COMMON_LIBRARY},${AEROSOL_MESH_LIBRARY},${AEROSOL_IO_LIBRARY})
list(APPEND VERSIONS_EXT_DEPS
${AEROSOL_COMMON_LIBRARY} ${AEROSOL_MESH_LIBRARY} ${AEROSOL_IO_LIBRARY})
endif ()
endif ()
option(COMMON_COMPRESSION "Build with founded compression libraries (CMake will search automatically which are availables" ON)
########################
# tests #
########################
if (CMAKE_VERSION VERSION_GREATER "2.8.11")
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test2.c "
#include <stdio.h>
#include <stdlib.h>
#ifdef EXT
extern
#endif
inline void f() {
}
")
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test.c "
#include <stdio.h>
#include <stdlib.h>
int main() {
f();
return 0;
}
")
try_compile(TEST_INLINE ${CMAKE_CURRENT_BINARY_DIR}/test
SOURCES ${CMAKE_CURRENT_BINARY_DIR}/test.c ${CMAKE_CURRENT_BINARY_DIR}/test2.c
)
if (NOT TEST_INLINE)
try_compile(TEST_INLINE ${CMAKE_CURRENT_BINARY_DIR}/test2
SOURCES ${CMAKE_CURRENT_BINARY_DIR}/test.c ${CMAKE_CURRENT_BINARY_DIR}/test2.c
COMPILE_DEFINITIONS -DEXT
)
if (NOT TEST_INLINE)
message (FATAL_ERROR "internal error")
else ()
add_definitions (-DPAMPA_WORD_EXTERN)
endif ()
endif ()
else (CMAKE_VERSION VERSION_GREATER "2.8.11")
if (CMAKE_C_COMPILER MATCHES "gcc") # XXX Is-it just for gcc?
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test.c "
#include <stdio.h>
#include <stdlib.h>
extern
inline void f() {
}
int main() {
f();
return 0;
}
")
try_compile(TEST_INLINE ${CMAKE_CURRENT_BINARY_DIR}/test
${CMAKE_CURRENT_BINARY_DIR}/test.c
)
if (TEST_INLINE)
add_definitions (-DPAMPA_WORD_EXTERN)
endif ()
endif (CMAKE_C_COMPILER MATCHES "gcc")
endif (CMAKE_VERSION VERSION_GREATER "2.8.11")
########################
# libpampa #
########################
add_subdirectory(${PAMPA_SOURCE_DIR}/src/libpampa)
# Add dependency on PT-Scotch
if (PTSCOTCH)
list (APPEND PAMPA_DEPENDENCIES ${PTSCOTCH_LIBRARY})
list (APPEND PAMPA_DEPENDENCIES ${SCOTCH_LIBRARY})
list (APPEND PAMPA_DEPENDENCIES ${PTSCOTCH_EXTRA_LIBRARY})
endif ()
########################
# libpampa-mmg3d4 #
########################
if (PAMPA_MMG3D4)
add_subdirectory (${PAMPA_SOURCE_DIR}/src/remeshers/mmg3d/libpampa-mmg3d4)
endif ()
########################
# libpampa-mmg3d5 #
########################
if (PAMPA_MMG3D5)
add_subdirectory (${PAMPA_SOURCE_DIR}/src/remeshers/mmg3d/libpampa-mmg3d5)
endif ()
########################
# libpampa-mmg3d #
########################
if (PAMPA_MMG3D)
add_subdirectory (${PAMPA_SOURCE_DIR}/src/remeshers/mmg3d/libpampa-mmg3d)
endif ()
########################
# libpampa-mshint #
########################
if (PAMPA_MSHINT)
add_subdirectory (${PAMPA_SOURCE_DIR}/src/interpolators/mshint/libpampa-mshint)
endif ()
########################
# libpampa-tetgen #
########################
if (PAMPA_TETGEN)
add_subdirectory (${PAMPA_SOURCE_DIR}/src/remeshers/tetgen/libpampa-tetgen)
endif ()
##########################
# libpampa-aerosol #
##########################
if (PAMPA_AEROSOL)
# Add dependency on Aerosol
include_directories (${AEROSOL_INCLUDE_DIR})
find_package(LibXml2 REQUIRED)
include_directories( ${LIBXML2_INCLUDE_DIR} )
list (APPEND AEROSOL_DEPENDENCIES ${AEROSOL_COMMON_LIBRARY} ${AEROSOL_MESH_LIBRARY} ${AEROSOL_IO_LIBRARY} ${LIBXML2_LIBRARIES})
add_subdirectory (${PAMPA_SOURCE_DIR}/src/libpampa-aerosol)
endif ()
########################
# samples #
########################
if (SAMPLES)
add_subdirectory(${PAMPA_SOURCE_DIR}/src/samples)
endif ()
########################
# executables #
########################
add_subdirectory(${PAMPA_SOURCE_DIR}/src/pampa)
########################
# tests #
########################
# Add target on Unix
if(UNIX)
add_custom_target(all_and_test COMMAND make all COMMAND ctest --force-new-ctest-process --output-on-failure)
endif(UNIX)
########################
# real clean #
########################
if(UNIX)
if (PAMPA_BUILD_ALONE)
add_custom_target(realclean
COMMAND make clean
COMMAND ${CMAKE_COMMAND} -E remove ${PAMPA_SOURCE_DIR}/include/*
COMMAND ${CMAKE_COMMAND} -E remove ${PAMPA_SOURCE_DIR}/lib/*
)
else ()
add_custom_target(realclean
COMMAND make clean
)
endif ()
endif(UNIX)
########################
# install #
########################
install(FILES ${PTSCOTCH_INCLUDE_DIR}/ptscotch.h DESTINATION include)
install(FILES ${PTSCOTCH_LIBRARY} ${PTSCOTCH_EXTRA_LIBRARY} DESTINATION lib)
########################
# uninstall #
########################
# uninstall target
configure_file(
"${PAMPA_SOURCE_DIR}/src/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
########################
# documentation #
########################
if (PAMPA_BUILD_DOC)
if (EXISTS ${PAMPA_SOURCE_DIR}/docs/CMakeLists.txt)
add_subdirectory(${PAMPA_SOURCE_DIR}/docs)
endif()
endif ()
if (NOT ${AEROSOL_PATH} STREQUAL ${AEROSOL_HOME})
set (AEROSOL_IO_LIBRARY "NOTFOUND")
set (AEROSOL_MESH_LIBRARY "NOTFOUND")
set (AEROSOL_COMMON_LIBRARY "NOTFOUND")
set (AEROSOL_INCLUDE_DIR "NOTFOUND")
endif ()
set (AEROSOL_PATH ${AEROSOL_HOME} CACHE INTERNAL "")
find_path (AEROSOL_INCLUDE_DIR common/Defines.hpp HINTS ${AEROSOL_PATH} PATH_SUFFIXES include)
find_library (AEROSOL_IO_LIBRARY NAMES IO HINTS ${AEROSOL_PATH} PATH_SUFFIXES lib)
find_library (AEROSOL_MESH_LIBRARY NAMES Mesh HINTS ${AEROSOL_PATH} PATH_SUFFIXES lib)
find_library (AEROSOL_COMMON_LIBRARY NAMES Common HINTS ${AEROSOL_PATH} PATH_SUFFIXES lib)
if (AEROSOL_INCLUDE_DIR AND AEROSOL_IO_LIBRARY AND AEROSOL_MESH_LIBRARY AND AEROSOL_COMMON_LIBRARY)
set (AEROSOL_FOUND TRUE)
endif ()
if (AEROSOL_FOUND)
if (NOT AEROSOL_FIND_QUIETLY)
message (STATUS "Found AEROSOL : ${AEROSOL_IO_LIBRARY}")
endif (NOT AEROSOL_FIND_QUIETLY)
else (AEROSOL_FOUND)
if (AEROSOL_FIND_REQUIRED)
message (FATAL_ERROR "Could not find AEROSOL. You have to define variable AEROSOL_HOME")
endif (AEROSOL_FIND_REQUIRED)
endif (AEROSOL_FOUND)
mark_as_advanced (AEROSOL_INCLUDE_DIR AEROSOL_IO_LIBRARY AEROSOL_MESH_LIBRARY
AEROSOL_COMMON_LIBRARY)
SET(LIBMESH5_PATH ${LIBMESH5_HOME})
FIND_PATH(LIBMESH5_INCLUDE_DIR libmesh5.h PATHS ${LIBMESH5_PATH} PATH_SUFFIXES include)
FIND_LIBRARY(LIBMESH5_LIBRARY NAMES libmesh5.a PATHS ${LIBMESH5_PATH} PATH_SUFFIXES lib)
IF (LIBMESH5_INCLUDE_DIR AND LIBMESH5_LIBRARY)
SET(LIBMESH5_FOUND TRUE)
ENDIF (LIBMESH5_INCLUDE_DIR AND LIBMESH5_LIBRARY)
IF (LIBMESH5_FOUND)
IF (NOT LIBMESH5_FIND_QUIETLY)
MESSAGE(STATUS "Found LIBMESH5 : ${LIBMESH5_LIBRARY}")
ENDIF (NOT LIBMESH5_FIND_QUIETLY)
ELSE (LIBMESH5_FOUND)
IF (LIBMESH5_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find LIBMESH5. You have to define variable LIBMESH5_HOME")
ENDIF (LIBMESH5_FIND_REQUIRED)
ENDIF (LIBMESH5_FOUND)
MARK_AS_ADVANCED(LIBMESH5_INCLUDE_DIR LIBMESH5_LIBRARY)
SET(MMG3D_PATH ${MMG3D_HOME})
FIND_PATH(MMG3D_INCLUDE_DIR libmmg3d.h PATHS ${MMG3D_PATH} PATH_SUFFIXES include)
FIND_LIBRARY(MMG3D_LIBRARY NAMES libmmg3d.a PATHS ${MMG3D_PATH} PATH_SUFFIXES lib)
if (PAMPA_MMG3D_SCOTCH)
FIND_LIBRARY(SCOTCH_MMG3D_LIBRARY NAMES libscotch.a PATHS ${MMG3D_PATH} PATH_SUFFIXES lib)
endif (PAMPA_MMG3D_SCOTCH)
IF (MMG3D_INCLUDE_DIR AND MMG3D_LIBRARY)
SET(MMG3D_FOUND TRUE)
ENDIF (MMG3D_INCLUDE_DIR AND MMG3D_LIBRARY)
IF (MMG3D_FOUND)
IF (NOT MMG3D_FIND_QUIETLY)
MESSAGE(STATUS "Found MMG3D : ${MMG3D_LIBRARY}")
ENDIF (NOT MMG3D_FIND_QUIETLY)
ELSE (MMG3D_FOUND)
IF (MMG3D_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find MMG3D. You have to define variable MMG3D_HOME")
ENDIF (MMG3D_FIND_REQUIRED)
ENDIF (MMG3D_FOUND)
MARK_AS_ADVANCED(MMG3D_INCLUDE_DIR MMG3D_LIBRARY)
set(MMG3D4_PATH ${MMG3D4_HOME})
FIND_PATH(MMG3D4_INCLUDE_DIR libmmg3d4.h PATHS ${MMG3D4_PATH} PATH_SUFFIXES include)
FIND_LIBRARY(MMG3D4_LIBRARY NAMES libmmg3d4.a PATHS ${MMG3D4_PATH} PATH_SUFFIXES lib)
if (PAMPA_MMG3D4_SCOTCH)
FIND_LIBRARY(SCOTCH_MMG3D4_LIBRARY NAMES libscotch.a PATHS ${MMG3D4_PATH} PATH_SUFFIXES lib)
endif (PAMPA_MMG3D4_SCOTCH)
IF (MMG3D4_INCLUDE_DIR AND MMG3D4_LIBRARY)
SET(MMG3D4_FOUND TRUE)
ENDIF (MMG3D4_INCLUDE_DIR AND MMG3D4_LIBRARY)
IF (MMG3D4_FOUND)
IF (NOT MMG3D4_FIND_QUIETLY)
MESSAGE(STATUS "Found MMG3D4 : ${MMG3D4_LIBRARY}")
ENDIF (NOT MMG3D4_FIND_QUIETLY)
ELSE (MMG3D4_FOUND)
IF (MMG3D4_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find MMG3D4. You have to define variable MMG3D4_HOME")
ENDIF (MMG3D4_FIND_REQUIRED)
ENDIF (MMG3D4_FOUND)
MARK_AS_ADVANCED(MMG3D4_INCLUDE_DIR MMG3D4_LIBRARY)
SET(MMG3D5_PATH ${MMG3D5_HOME})
FIND_PATH(MMG3D5_INCLUDE_DIR libmmg3d5.h PATHS ${MMG3D5_PATH} PATH_SUFFIXES include)
FIND_LIBRARY(MMG3D5_LIBRARY NAMES libmmg3d5.a PATHS ${MMG3D5_PATH} PATH_SUFFIXES lib)
if (PAMPA_MMG3D5_SCOTCH)
FIND_LIBRARY(SCOTCH_MMG3D5_LIBRARY NAMES libscotch.a PATHS ${MMG3D5_PATH} PATH_SUFFIXES lib)
endif (PAMPA_MMG3D5_SCOTCH)
IF (MMG3D5_INCLUDE_DIR AND MMG3D5_LIBRARY)
SET(MMG3D5_FOUND TRUE)
ENDIF (MMG3D5_INCLUDE_DIR AND MMG3D5_LIBRARY)
IF (MMG3D5_FOUND)
IF (NOT MMG3D5_FIND_QUIETLY)
MESSAGE(STATUS "Found MMG3D5 : ${MMG3D5_LIBRARY}")
ENDIF (NOT MMG3D5_FIND_QUIETLY)
ELSE (MMG3D5_FOUND)
IF (MMG3D5_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find MMG3D5. You have to define variable MMG3D5_HOME")
ENDIF (MMG3D5_FIND_REQUIRED)
ENDIF (MMG3D5_FOUND)
MARK_AS_ADVANCED(MMG3D5_INCLUDE_DIR MMG3D5_LIBRARY)
SET(MSHINT_PATH ${MSHINT_HOME})
FIND_PATH(MSHINT_INCLUDE_DIR mshint.h PATHS ${MSHINT_PATH} PATH_SUFFIXES include)
FIND_LIBRARY(MSHINT_LIBRARY NAMES libmshint.a PATHS ${MSHINT_PATH} PATH_SUFFIXES lib)
IF (MSHINT_INCLUDE_DIR AND MSHINT_LIBRARY)
SET(MSHINT_FOUND TRUE)
ENDIF (MSHINT_INCLUDE_DIR AND MSHINT_LIBRARY)
IF (MSHINT_FOUND)
IF (NOT MSHINT_FIND_QUIETLY)
MESSAGE(STATUS "Found MSHINT : ${MSHINT_LIBRARY}")
ENDIF (NOT MSHINT_FIND_QUIETLY)
ELSE (MSHINT_FOUND)
IF (MSHINT_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find MSHINT. You have to define variable MSHINT_HOME")
ENDIF (MSHINT_FIND_REQUIRED)
ENDIF (MSHINT_FOUND)
MARK_AS_ADVANCED(MSHINT_INCLUDE_DIR MSHINT_LIBRARY)
if (NOT ${NETLOC_PATH} STREQUAL ${NETLOC_HOME})
set (NETLOC_LIBRARY "NOTFOUND")
set (NETLOC_INCLUDE_DIR "NOTFOUND")
endif ()
set (NETLOC_PATH ${NETLOC_HOME} CACHE INTERNAL "")
find_path (NETLOC_INCLUDE_DIR netlocscotch.h HINTS ${NETLOC_PATH} PATH_SUFFIXES include)
find_library (NETLOC_LIBRARY NAMES netlocscotch HINTS ${NETLOC_PATH} PATH_SUFFIXES lib)
if (NETLOC_INCLUDE_DIR AND NETLOC_LIBRARY)
set (NETLOC_FOUND TRUE)
endif (NETLOC_INCLUDE_DIR AND NETLOC_LIBRARY)
if (NETLOC_FOUND)
if (NOT NETLOC_FIND_QUIETLY)
message (STATUS "Found NETLOC : ${NETLOC_LIBRARY}")
endif (NOT NETLOC_FIND_QUIETLY)
else (NETLOC_FOUND)
if (NETLOC_FIND_REQUIRED)
message (FATAL_ERROR "Could not find NETLOC. You have to define variable NETLOC_HOME")
endif (NETLOC_FIND_REQUIRED)
endif (NETLOC_FOUND)
mark_as_advanced (NETLOC_INCLUDE_DIR NETLOC_LIBRARY SCOTCH_LIBRARY)
if (NOT ${PTSCOTCH_PATH} STREQUAL ${PTSCOTCH_HOME})
set (PTSCOTCH_LIBRARY "NOTFOUND")
set (SCOTCH_LIBRARY "NOTFOUND")
set (PTSCOTCH_EXTRA_LIBRARY "NOTFOUND")
set (PTSCOTCH_INCLUDE_DIR "NOTFOUND")
endif ()
set (PTSCOTCH_PATH ${PTSCOTCH_HOME} CACHE INTERNAL "")
find_path (PTSCOTCH_INCLUDE_DIR ptscotch${PTSCOTCH_SUFFIX}.h HINTS ${PTSCOTCH_PATH} PATH_SUFFIXES include)
find_library (PTSCOTCH_LIBRARY NAMES ptscotch${PTSCOTCH_SUFFIX} HINTS ${PTSCOTCH_PATH} PATH_SUFFIXES lib)
find_library (SCOTCH_LIBRARY NAMES scotch${PTSCOTCH_SUFFIX} HINTS ${PTSCOTCH_PATH} PATH_SUFFIXES lib)
find_library (PTSCOTCH_EXTRA_LIBRARY NAMES ptscotcherr${PTSCOTCH_SUFFIX} HINTS ${PTSCOTCH_PATH} PATH_SUFFIXES lib)
if (PTSCOTCH_INCLUDE_DIR AND PTSCOTCH_LIBRARY AND SCOTCH_LIBRARY AND PTSCOTCH_EXTRA_LIBRARY)
set (PTSCOTCH_FOUND TRUE)
endif (PTSCOTCH_INCLUDE_DIR AND PTSCOTCH_LIBRARY AND SCOTCH_LIBRARY AND
PTSCOTCH_EXTRA_LIBRARY)
if (PTSCOTCH_FOUND)
if (NOT PTSCOTCH_FIND_QUIETLY)
message (STATUS "Found PTSCOTCH : ${PTSCOTCH_LIBRARY}")
endif (NOT PTSCOTCH_FIND_QUIETLY)
else (PTSCOTCH_FOUND)
if (PTSCOTCH_FIND_REQUIRED)
message (FATAL_ERROR "Could not find PTSCOTCH. You have to define variable PTSCOTCH_HOME")
endif (PTSCOTCH_FIND_REQUIRED)
endif (PTSCOTCH_FOUND)
mark_as_advanced (PTSCOTCH_INCLUDE_DIR PTSCOTCH_LIBRARY SCOTCH_LIBRARY
PTSCOTCH_EXTRA_LIBRARY PTSCOTCH_SUFFIX)
SET(TETGEN_PATH ${TETGEN_HOME})
FIND_PATH(TETGEN_INCLUDE_DIR tetgen.h PATHS ${TETGEN_PATH} PATH_SUFFIXES include)
FIND_LIBRARY(TETGEN_LIBRARY NAMES libtet.a PATHS ${TETGEN_PATH} PATH_SUFFIXES lib)
IF (TETGEN_INCLUDE_DIR AND TETGEN_LIBRARY)
SET(TETGEN_FOUND TRUE)
ENDIF (TETGEN_INCLUDE_DIR AND TETGEN_LIBRARY)
IF (TETGEN_FOUND)
IF (NOT TETGEN_FIND_QUIETLY)
MESSAGE(STATUS "Found TETGEN : ${TETGEN_LIBRARY}")
ENDIF (NOT TETGEN_FIND_QUIETLY)
ELSE (TETGEN_FOUND)
IF (TETGEN_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find TETGEN. You have to define variable TETGEN_HOME")
ENDIF (TETGEN_FIND_REQUIRED)
ENDIF (TETGEN_FOUND)
MARK_AS_ADVANCED(TETGEN_INCLUDE_DIR TETGEN_LIBRARY)
#!/bin/bash
rm -f $4-*
$1 -n $2 $3 $4
cat $4-* > $4
diff $4 $5
#!/bin/bash
rm -f $2
$1 $2
diff $2 $3
#!/bin/bash
#echo $*
opath=$( pwd )
echo "/* Generated file by $0 */" > $opath/versions_ext.h
echo -e "Searching versions for external tools..."
for i in $*; do
prgm=$( echo $i|awk -F: '{print $1}' )
echo -e "\tExternal tool:$prgm"
path=$( echo $i|awk -F: '{print $2}' )
files=$( echo $i|awk -F: '{print $3}'|sed -e 's/,/ /g' )
cd $path
res=$(git rev-parse 2>/dev/null)
if [ $? == 0 ];then
#echo "depot git pour $prgm"
scm="git"
rev=$( git log --pretty=oneline --abbrev-commit --abbrev=10 -1|awk '{print $1}' )
# not commited files
notc=$( git diff HEAD --name-only|wc -l )
else
res=$(svn status 2>&1 |grep -v "not a working copy")
if [ $? == 0 ]; then
#echo "depot svn pour $prgm"
scm="svn"
#rev=$( svn log -l 1|grep "^r"|awk '{print $1}' )
rev=$( svn info|grep Revision|awk '{print $2}' )
# not commited files
notc=$( svn st|grep "^M"|wc -l )
else
#echo "ni git ni svn pour $prgm"
scm="none"
rev="none"
notc="infinity"
fi
fi
echo -e "\t\tFind modified files after last building..."
cmd="find $path -type f"
for file in $files; do
cmd="$cmd -a -cnewer $file"
done
echo -e "\t\tDone"
chgd=$( $cmd | wc -l )
echo "#define ${prgm}_PATH \"$path\"" >> $opath/versions_ext.h
echo "#define ${prgm}_SCM \"$scm\"" >> $opath/versions_ext.h
echo "#define ${prgm}_REV \"$rev\"" >> $opath/versions_ext.h
echo "/* Number of files changed after last building */" >> $opath/versions_ext.h
echo "#define ${prgm}_CHGD \"$chgd\"" >> $opath/versions_ext.h
echo "/* Not commited files */" >> $opath/versions_ext.h
echo "#define ${prgm}_NOTC \"$notc\"" >> $opath/versions_ext.h
echo -e "\tDone"
done
#!/bin/bash
#echo $*
oldfile=$1
newfile=$2
prgm=$3
path=$4
cd $path
res=$(git rev-parse 2>/dev/null)
if [ $? == 0 ];then
#echo "depot git pour $prgm"
scm="git"
rev=$( git log --pretty=oneline --abbrev-commit --abbrev=10 -1|awk '{print $1}' )
# not commited files
notc=$( git diff HEAD --name-only|wc -l )
else
res=$(svn status 2>&1 |grep -v "not a working copy")
if [ $? == 0 ]; then
#echo "depot svn pour $prgm"
scm="svn"
#rev=$( svn log -l 1|grep "^r"|awk '{print $1}' )
rev=$( svn info|grep Revision|awk '{print $2}' )
# not commited files
notc=$( svn st|grep "^M"|wc -l )
else
#echo "ni git ni svn pour $prgm"
scm="none"
rev="none"
notc="infinity"
fi
fi
echo "#define ${prgm}_PATH \"$path\"" >> $oldfile
echo "#define ${prgm}_SCM \"$scm\"" >> $oldfile
echo "#define ${prgm}_REV \"$rev\"" >> $oldfile
echo "/* Number of files changed after last building */" >> $oldfile
echo "/* Not commited files */" >> $oldfile
echo "#define ${prgm}_NOTC \"$notc\"" >> $oldfile
cmd=$( diff -q $oldfile $newfile)
if [ ! $? == 0 ]; then
cp $oldfile $newfile
fi
Cette copie de la distribution logicielle Scotch 5.2 est distribuée
selon les termes de la licence de logiciel libre CeCILL-C.
Une copie du texte de cette licence se trouve dans le sous-répertoire
"doc", dans le fichier appelé "CeCILL-C_V1-fr.txt". Veuillez en lire
attentivement les clauses. Vous ne pourrez utiliser cette copie de la
distribution logicielle Scotch 5.2 que si vous les acceptez.
This copy of the Scotch 5.2 distribution is licensed to you under the
terms of the CeCILL-C free/libre software license.
A copy of this license is available in subdirectory "doc", in file
named "CeCILL-C_V1-en.txt". Please read its terms carefully. Only if
you accept them can you use this copy of the Scotch 5.2 distribution.
The terms under which this copy of the PaMPA 0.0 distribution
is provided to you are described in file "LICENSE_en.txt", located
in the same directory as this file.
If you accept them, please refer to file "docs/user_1.0/doc.pdf" or
"docs/user_0.0/html/index.html", also located in this directory, for
the installation instructions.
########################
# documentation #
########################
find_package (Doxygen)
if (DOXYGEN_FOUND)
if (FORTRAN_INTERFACE)
# Generate pampaf.h
add_custom_command (OUTPUT pampaf_user.h
COMMAND ${CMAKE_COMMAND} -E copy
${PAMPA_BINARY_DIR}/src/libpampa/pampaf.h ${CMAKE_CURRENT_BINARY_DIR}/pampaf_user.h
COMMAND sed -e 's/^!/\\/\\//g' pampaf_user.h > ${PAMPA_SOURCE_DIR}/BUILD/pampaf.h
DEPENDS ${PAMPA_BINARY_DIR}/src/libpampa/pampaf.h)
list (APPEND DOC_DEPENDENCIES pampaf_user.h)
endif (FORTRAN_INTERFACE)
# Api documentation
file (GLOB API_PAGES ${PAMPA_SOURCE_DIR}/docs/api_pages/*.c)
add_custom_command (OUTPUT pampa_api.h
COMMAND ${CMAKE_COMMAND} -E remove
${CMAKE_CURRENT_BINARY_DIR}/pampa_user.h
COMMAND ${CMAKE_COMMAND} -E copy
${PAMPA_BINARY_DIR}/src/libpampa/pampa.h ${CMAKE_CURRENT_BINARY_DIR}/pampa_api.h
COMMAND cat ${PAMPA_SOURCE_DIR}/docs/api_pages/*.c >> ${CMAKE_CURRENT_BINARY_DIR}/pampa_api.h
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_BINARY_DIR}/pampa_api.h ${PAMPA_SOURCE_DIR}/BUILD/pampa.h
DEPENDS ${PAMPA_BINARY_DIR}/src/libpampa/pampa.h ${API_PAGES})
list (APPEND DOC_DEPENDENCIES pampa_api.h)
add_custom_target (apidoc
COMMAND ${CMAKE_COMMAND} -E echo_append "Building API Documentation..."
COMMAND ${DOXYGEN_EXECUTABLE} ${PAMPA_SOURCE_DIR}/docs/ApiDoxyfile
COMMAND ${CMAKE_COMMAND} -E echo "Done."
WORKING_DIRECTORY ${PAMPA_SOURCE_DIR}/docs
DEPENDS ${DOC_DEPENDENCIES})
# User documentation
file (GLOB USER_PAGES ${PAMPA_SOURCE_DIR}/docs/user_pages/*.c)
add_custom_command (OUTPUT pampa_user.h
COMMAND ${CMAKE_COMMAND} -E remove
${CMAKE_CURRENT_BINARY_DIR}/pampa_api.h
COMMAND ${CMAKE_COMMAND} -E copy
${PAMPA_BINARY_DIR}/src/libpampa/pampa.h ${CMAKE_CURRENT_BINARY_DIR}/pampa_user.h
COMMAND cat ${PAMPA_SOURCE_DIR}/docs/user_pages/*.c >> ${CMAKE_CURRENT_BINARY_DIR}/pampa_user.h
COMMAND ${PAMPA_SOURCE_DIR}/docs/list_examples.sh ${PAMPA_SOURCE_DIR}/src/samples ${CMAKE_CURRENT_BINARY_DIR}/pampa_user.h
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_BINARY_DIR}/pampa_user.h ${PAMPA_SOURCE_DIR}/src/libpampa/pampa.h
DEPENDS ${PAMPA_BINARY_DIR}/src/libpampa/pampa.h ${USER_PAGES})
list (APPEND DOC_DEPENDENCIES pampa_user.h)
add_custom_target (userdoc
COMMAND ${CMAKE_COMMAND} -E echo_append "Building User Documentation..."
COMMAND ${DOXYGEN_EXECUTABLE} ${PAMPA_SOURCE_DIR}/docs/UserDoxyfile
COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/pampa_user.h ${PAMPA_SOURCE_DIR}/src/libpampa/pampa.h
COMMAND ${CMAKE_COMMAND} -E echo "Done."
WORKING_DIRECTORY ${PAMPA_SOURCE_DIR}/docs
DEPENDS ${DOC_DEPENDENCIES} pampa_user.h)
# Pdf user documentation
if (UNIX)
add_custom_target (userpdfdoc
COMMAND ${CMAKE_COMMAND} -E echo_append "Building User Pdf Documentation..."
COMMAND make
COMMAND ${CMAKE_COMMAND} -E copy refman.pdf ../doc_${PAMPA_VERSION}.${PAMPA_RELEASE}.${PAMPA_PATCHLEVEL}.pdf
COMMAND ${CMAKE_COMMAND} -E echo "Done."
WORKING_DIRECTORY ${PAMPA_SOURCE_DIR}/docs/user_${PAMPA_VERSION}.${PAMPA_RELEASE}.${PAMPA_PATCHLEVEL}/latex)
add_custom_target (apipdfdoc
COMMAND ${CMAKE_COMMAND} -E echo_append "Building Api Pdf Documentation..."
COMMAND make
COMMAND ${CMAKE_COMMAND} -E copy refman.pdf ../doc_api_${PAMPA_VERSION}.${PAMPA_RELEASE}.${PAMPA_PATCHLEVEL}.pdf
COMMAND ${CMAKE_COMMAND} -E echo "Done."
WORKING_DIRECTORY ${PAMPA_SOURCE_DIR}/docs/api_${PAMPA_VERSION}.${PAMPA_RELEASE}.${PAMPA_PATCHLEVEL}/latex)
endif (UNIX)
add_dependencies (apidoc pampa)
add_dependencies (apipdfdoc apidoc)
add_dependencies (userdoc pampa)
add_dependencies (userpdfdoc userdoc)
# Define target doc
add_custom_target (doc DEPENDS apidoc apipdfdoc userdoc userpdfdoc)
# Specify where man documentation will be installed
file (GLOB MAN_FILES ${PAMPA_SOURCE_DIR}/docs/user_${PAMPA_VERSION}.${PAMPA_RELEASE}.${PAMPA_PATCHLEVEL}/man/man3/*.3)
install (FILES ${MAN_FILES}
DESTINATION share/man/man3)
endif (DOXYGEN_FOUND)
# Doxyfile 1.8.1.2
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project
#
# All text after a 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.
DOXYFILE_ENCODING = UTF-8
# The PROJECT_NAME tag is a single word (or sequence of words) that should
# identify the project. Note that if you do not use Doxywizard you need
# to put quotes around the project name if it contains spaces.
PROJECT_NAME = PaMPA
# 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 = 1.0
# 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)
# base path where the generated documentation will be put.
# 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 = user_1.0.0
# 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 cause performance problems for the file system.
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.
# The default language is English, other supported languages are:
# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
OUTPUT_LANGUAGE = English
# If the BRIEF_MEMBER_DESC tag is set to YES (the default) 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.
BRIEF_MEMBER_DESC = YES
# If the REPEAT_BRIEF tag is set to YES (the default) 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.
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" "the"
ABBREVIATE_BRIEF = "The $name class" \
"The $name widget" \
"The $name file" \
is \
provides \
specifies \
contains \
represents \
a \
an \
the
# 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.
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.
INLINE_INHERITED_MEMB = NO
# If the FULL_PATH_NAMES tag is set to YES then 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.
FULL_PATH_NAMES = NO
# If the FULL_PATH_NAMES tag is set to YES then 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.
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 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 if your file system
# doesn't support long names like on DOS, Mac, or CD-ROM.
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
# comments will behave just like regular Qt-style comments
# (thus requiring an explicit @brief command for a brief description.)
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 comments
# will behave just like regular Qt-style comments (thus requiring
# an explicit \brief command for a brief description.)
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 behaviour.
# 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 behaviour instead.
MULTILINE_CPP_IS_BRIEF = NO
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
# member inherits the documentation from any documented member that it
# re-implements.
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.
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.
TAB_SIZE = 8
# This tag can be used to specify a number of aliases that acts
# 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.
OPTIMIZE_OUTPUT_FOR_C = YES
# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
# sources only. Doxygen will then generate output that is more tailored for
# Java. For instance, namespaces will be presented as packages, qualified
# scopes will look different, etc.
OPTIMIZE_OUTPUT_JAVA = NO
# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
# sources only. Doxygen will then generate output that is more tailored for
# Fortran.
OPTIMIZE_FOR_FORTRAN = YES
# 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.
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, CSharp, C,
# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. 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 that for custom extensions
# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
EXTENSION_MAPPING =
# If MARKDOWN_SUPPORT is enabled (the default) 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.
MARKDOWN_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); v.s.
# func(std::string) {}). This also makes the inheritance and collaboration
# diagrams that involve STL classes more complete and accurate.
BUILTIN_STL_SUPPORT = NO
# If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support.
CPP_CLI_SUPPORT = NO
# Set the SIP_SUPPORT tag to YES if your project consists of sip 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.
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 (the default)
# will make doxygen 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.
IDL_PROPERTY_SUPPORT = YES
# 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.
DISTRIBUTE_GROUP_DOC = NO
# Set the SUBGROUPING tag to YES (the default) 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.
SUBGROUPING = NO
# 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).
INLINE_GROUPED_CLASSES = NO
# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
# unions with only public data 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 (the default),
# structs, classes, and unions are shown on a separate page (for HTML and Man
# pages) or section (for LaTeX and RTF).
INLINE_SIMPLE_STRUCTS = NO
# When TYPEDEF_HIDES_STRUCT 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.
TYPEDEF_HIDES_STRUCT = NO
# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
# determine which symbols to keep in memory and which to flush to disk.
# When the cache is full, less often used symbols will be written to disk.
# For small to medium size projects (<1000 input files) the default value is
# probably good enough. For larger projects a too small cache size can cause
# doxygen to be busy swapping symbols to and from disk most of the time
# causing a significant performance penalty.
# If the system has enough physical memory increasing the cache will improve the
# performance by keeping more symbols in memory. Note that the value works on
# a logarithmic scale so increasing the size by one will roughly double the
# memory usage. The cache size is given by this formula:
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
# corresponding to a cache size of 2^16 = 65536 symbols.
SYMBOL_CACHE_SIZE = 0
# Similar to the SYMBOL_CACHE_SIZE 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 appear 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.
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 and EXTRACT_STATIC tags are set to YES
EXTRACT_ALL = YES
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
# will be included in the documentation.
EXTRACT_PRIVATE = YES