Skip to content
Snippets Groups Projects
Commit df11a7be authored by Anthony Royer's avatar Anthony Royer
Browse files

Fix examples

parent 64cc7790
No related branches found
No related tags found
No related merge requests found
Pipeline #8983 passed
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(demo CXX)
project(example CXX)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake)
add_executable(demo main.cpp ${EXTRA_INCS})
target_link_libraries(demo ${EXTRA_LIBS})
add_executable(example main.cpp ${EXTRA_INCS})
target_link_libraries(example ${EXTRA_LIBS})
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(demo CXX)
project(example CXX)
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag("-std=c++11" HAVE_CXX11)
if(HAVE_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
else()
message(ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()
include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake)
check_cxx_compiler_flag("-Wall" HAVE_WALL)
if(HAVE_WALL)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
endif()
macro(find_all_libraries VARNAME LISTNAME PATH SUFFIX)
set(${VARNAME})
list(LENGTH ${LISTNAME} NUM_LIST)
foreach(LIB ${${LISTNAME}})
if("${PATH}" STREQUAL "")
find_library(FOUND_LIB ${LIB} PATH_SUFFIXES ${SUFFIX})
else()
find_library(FOUND_LIB ${LIB} PATHS ${PATH} NO_DEFAULT_PATH)
endif()
if(FOUND_LIB)
list(APPEND ${VARNAME} ${FOUND_LIB})
endif()
unset(FOUND_LIB CACHE)
endforeach()
list(LENGTH ${VARNAME} NUM_FOUND_LIBRARIES)
if(NUM_FOUND_LIBRARIES LESS NUM_LIST)
set(${VARNAME})
endif()
endmacro()
macro(set_config_option STRING VARNAME)
set(${VARNAME} TRUE)
list(APPEND CONFIG_OPTIONS ${STRING})
message(STATUS "Found " ${STRING})
endmacro()
macro(opt OPTION HELP VALUE)
option(ENABLE_${OPTION} ${HELP} ${VALUE})
set(OPT_TEXI "${OPT_TEXI}\n@item ENABLE_${OPTION}\n${HELP} (default: ${VALUE})")
endmacro()
opt(MPI "Enable MPI" OFF)
####
# Mandatory libs
####
# Gmsh (Mandatory)
find_library(GMSH_LIB gmsh)
if(NOT GMSH_LIB)
message(FATAL_ERROR "Could not find libgmsh")
endif(NOT GMSH_LIB)
find_path(GMSH_INC gmsh.h)
if(NOT GMSH_INC)
message(FATAL_ERROR "Could not find gmsh.h")
endif(NOT GMSH_INC)
list(APPEND EXTRA_INCS ${GMSH_INC})
list(APPEND EXTRA_LIBS ${GMSH_LIB})
# GmshFem
find_library(GMSHFEM_LIB gmshfem)
if(NOT GMSHFEM_LIB)
message(FATAL_ERROR "Could not find libgmshfem")
endif(NOT GMSHFEM_LIB)
find_path(GMSHFEM_INC gmshfem/GmshFem.h)
if(NOT GMSHFEM_INC)
message(FATAL_ERROR "Could not find 'gmshfem/GmshFem.h'")
endif(NOT GMSHFEM_INC)
list(APPEND EXTRA_LIBS ${GMSHFEM_LIB})
list(APPEND EXTRA_INCS ${GMSHFEM_INC}/gmshfem/contrib)
list(APPEND EXTRA_INCS ${GMSHFEM_INC})
# GmshDdm
find_library(GMSHDDM_LIB gmshddm)
if(NOT GMSHDDM_LIB)
message(FATAL_ERROR "Could not find libgmshddm")
endif(NOT GMSHDDM_LIB)
find_path(GMSHDDM_INC gmshddm/GmshDdm.h)
if(NOT GMSHDDM_INC)
message(FATAL_ERROR "Could not find 'gmshddm/GmshDdm.h'")
endif(NOT GMSHDDM_INC)
list(APPEND EXTRA_LIBS ${GMSHDDM_LIB})
list(APPEND EXTRA_INCS ${GMSHDDM_INC})
# Eigen
find_package(Eigen3 REQUIRED)
list(APPEND EXTRA_INCS "${EIGEN3_INCLUDE_DIR}")
# OpenMP
find_package(OpenMP)
if(OPENMP_FOUND)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif(OPENMP_FOUND)
if(APPLE AND EXISTS "/usr/local/opt/libomp")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xpreprocessor -fopenmp -I/usr/local/opt/libomp/include")
list(APPEND EXTRA_LIBS "-L/usr/local/opt/libomp/lib -lomp")
endif()
# MPI
if(ENABLE_MPI)
find_package(MPI)
if(MPI_FOUND)
list(APPEND EXTRA_INCS ${MPI_CXX_INCLUDE_PATH})
list(APPEND EXTRA_LIBS ${MPI_CXX_LIBRARIES})
set(CMAKE_C_COMPILER ${MPI_C_COMPILER})
set(CMAKE_CXX_COMPILER ${MPI_CXX_COMPILER})
set(CMAKE_Fortran_COMPILER ${MPI_Fortran_COMPILER})
set_config_option("MPI" HAVE_MPI)
endif()
endif()
# PETSc
if(PETSC_DIR)
set(ENV_PETSC_DIR ${PETSC_DIR})
else()
set(ENV_PETSC_DIR $ENV{PETSC_DIR})
endif()
if(PETSC_ARCH)
set(ENV_PETSC_ARCH ${PETSC_ARCH})
else()
set(ENV_PETSC_ARCH $ENV{PETSC_ARCH})
endif()
set(PETSC_POSSIBLE_CONF_FILES
${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/conf/petscvariables
${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib/petsc-conf/petscvariables
${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib/petsc/conf/petscvariables)
foreach(FILE ${PETSC_POSSIBLE_CONF_FILES})
if(EXISTS ${FILE})
# old-style PETSc installations (using PETSC_DIR and PETSC_ARCH)
message(STATUS "Using PETSc dir: ${ENV_PETSC_DIR}")
message(STATUS "Using PETSc arch: ${ENV_PETSC_ARCH}")
# find includes by parsing the petscvariables file
file(STRINGS ${FILE} PETSC_VARIABLES NEWLINE_CONSUME)
endif()
endforeach()
if(PETSC_VARIABLES)
# try to find PETSC_CC_INCLUDES for PETSc >= 3.4
string(REGEX MATCH "PETSC_CC_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES ${PETSC_VARIABLES})
if(PETSC_PACKAGES_INCLUDES)
string(REPLACE "PETSC_CC_INCLUDES = " "" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
else()
# try to find PETSC_PACKAGES_INCLUDES in older versions
list(APPEND EXTRA_INCS ${ENV_PETSC_DIR}/include)
list(APPEND EXTRA_INCS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/include)
string(REGEX MATCH "PACKAGES_INCLUDES = [^\n\r]*" PETSC_PACKAGES_INCLUDES ${PETSC_VARIABLES})
string(REPLACE "PACKAGES_INCLUDES = " "" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
endif()
if(PETSC_PACKAGES_INCLUDES)
if(PETSC_PACKAGES_INCLUDES)
string(REPLACE "-I" "" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
string(REPLACE " " ";" PETSC_PACKAGES_INCLUDES ${PETSC_PACKAGES_INCLUDES})
foreach(VAR ${PETSC_PACKAGES_INCLUDES})
list(APPEND EXTRA_INCS ${VAR})
endforeach()
endif()
endif()
# find libraries (<= 3.0)
set(PETSC_LIBS_REQUIRED petscksp petscdm petscmat petscvec petsc)
find_all_libraries(PETSC_LIBS PETSC_LIBS_REQUIRED ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib "")
# petsc 3.1 creates only one library (libpetsc)
if(NOT PETSC_LIBS)
find_library(PETSC_LIBS petsc PATHS ${ENV_PETSC_DIR}/${ENV_PETSC_ARCH}/lib NO_DEFAULT_PATH)
endif()
list(APPEND EXTRA_LIBS ${PETSC_LIBS})
string(REGEX MATCH "PACKAGES_LIBS = [^\n\r]*" PLIBS ${PETSC_VARIABLES})
if(PLIBS)
string(REPLACE "PACKAGES_LIBS = " "" PLIBS ${PLIBS})
string(STRIP ${PLIBS} PLIBS)
list(APPEND EXTRA_LIBS "${PLIBS}")
endif()
string(REGEX MATCH "PETSC_EXTERNAL_LIB_BASIC = [^\n\r]*" PLIBS_BASIC ${PETSC_VARIABLES})
if(PLIBS_BASIC)
string(REPLACE "PETSC_EXTERNAL_LIB_BASIC = " "" PLIBS_BASIC ${PLIBS_BASIC})
string(STRIP ${PLIBS_BASIC} PLIBS_BASIC)
list(APPEND EXTRA_LIBS "${PLIBS_BASIC}")
endif()
string(REGEX MATCH "PCC_LINKER_LIBS = [^\n\r]*" LLIBS ${PETSC_VARIABLES})
if(LLIBS)
string(REPLACE "PCC_LINKER_LIBS = " "" LLIBS ${LLIBS})
string(STRIP ${LLIBS} LLIBS)
list(APPEND EXTRA_LIBS "${LLIBS}")
endif()
set_config_option("PETSc" HAVE_PETSC)
list(APPEND EXTRA_LIBS ${PETSC_LIBS})
else()
find_library(PETSC_LIBS petsc)
find_path(PETSC_INC "petsc.h" PATH_SUFFIXES include/petsc)
if(PETSC_LIBS AND PETSC_INC)
set_config_option("PETSc" HAVE_PETSC)
list(APPEND EXTRA_LIBS ${PETSC_LIBS})
list(APPEND EXTRA_INCS ${PETSC_INC})
endif()
endif()
include_directories(${EXTRA_INCS})
add_executable(demo main.cpp mesh.cpp ddm2D.cpp ddm3D.cpp Subproblem2D.cpp Subproblem3D.cpp SubproblemDomains.cpp SubproblemParameters.cpp monoDomain.cpp ${EXTRA_INCS})
target_link_libraries(demo ${EXTRA_LIBS})
add_executable(example main.cpp mesh.cpp ddm2D.cpp ddm3D.cpp Subproblem2D.cpp Subproblem3D.cpp SubproblemDomains.cpp SubproblemParameters.cpp monoDomain.cpp ${EXTRA_INCS})
target_link_libraries(example ${EXTRA_LIBS})
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(demo CXX)
project(example CXX)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../example.cmake)
add_executable(demo main.cpp ${EXTRA_INCS})
target_link_libraries(demo ${EXTRA_LIBS})
add_executable(example main.cpp ${EXTRA_INCS})
target_link_libraries(example ${EXTRA_LIBS})
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(demo CXX)
project(example CXX)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake)
add_executable(demo main.cpp ${EXTRA_INCS})
target_link_libraries(demo ${EXTRA_LIBS})
add_executable(example main.cpp ${EXTRA_INCS})
target_link_libraries(example ${EXTRA_LIBS})
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(demo CXX)
project(example CXX)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake)
add_executable(demo main.cpp ${EXTRA_INCS})
target_link_libraries(demo ${EXTRA_LIBS})
add_executable(example main.cpp ${EXTRA_INCS})
target_link_libraries(example ${EXTRA_LIBS})
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(demo CXX)
project(example CXX)
include(${CMAKE_CURRENT_SOURCE_DIR}/../example.cmake)
add_executable(demo main.cpp ${EXTRA_INCS})
target_link_libraries(demo ${EXTRA_LIBS})
add_executable(example main.cpp ${EXTRA_INCS})
target_link_libraries(example ${EXTRA_LIBS})
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(demo CXX)
project(example CXX)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake)
add_executable(demo main.cpp ${EXTRA_INCS})
target_link_libraries(demo ${EXTRA_LIBS})
add_executable(example main.cpp ${EXTRA_INCS})
target_link_libraries(example ${EXTRA_LIBS})
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment