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

Fix examples

parent 64cc7790
Branches
Tags
No related merge requests found
Pipeline #8983 passed
cmake_minimum_required(VERSION 3.0 FATAL_ERROR) cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(demo CXX) project(example CXX)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake)
add_executable(demo main.cpp ${EXTRA_INCS}) add_executable(example main.cpp ${EXTRA_INCS})
target_link_libraries(demo ${EXTRA_LIBS}) target_link_libraries(example ${EXTRA_LIBS})
cmake_minimum_required(VERSION 3.0 FATAL_ERROR) cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(demo CXX) project(example CXX)
include(CheckCXXCompilerFlag) include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake)
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()
check_cxx_compiler_flag("-Wall" HAVE_WALL) add_executable(example main.cpp mesh.cpp ddm2D.cpp ddm3D.cpp Subproblem2D.cpp Subproblem3D.cpp SubproblemDomains.cpp SubproblemParameters.cpp monoDomain.cpp ${EXTRA_INCS})
if(HAVE_WALL) target_link_libraries(example ${EXTRA_LIBS})
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})
cmake_minimum_required(VERSION 3.0 FATAL_ERROR) cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(demo CXX) project(example CXX)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../example.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/../../../example.cmake)
add_executable(demo main.cpp ${EXTRA_INCS}) add_executable(example main.cpp ${EXTRA_INCS})
target_link_libraries(demo ${EXTRA_LIBS}) target_link_libraries(example ${EXTRA_LIBS})
cmake_minimum_required(VERSION 3.0 FATAL_ERROR) cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(demo CXX) project(example CXX)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake)
add_executable(demo main.cpp ${EXTRA_INCS}) add_executable(example main.cpp ${EXTRA_INCS})
target_link_libraries(demo ${EXTRA_LIBS}) target_link_libraries(example ${EXTRA_LIBS})
cmake_minimum_required(VERSION 3.0 FATAL_ERROR) cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(demo CXX) project(example CXX)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake)
add_executable(demo main.cpp ${EXTRA_INCS}) add_executable(example main.cpp ${EXTRA_INCS})
target_link_libraries(demo ${EXTRA_LIBS}) target_link_libraries(example ${EXTRA_LIBS})
cmake_minimum_required(VERSION 3.0 FATAL_ERROR) cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(demo CXX) project(example CXX)
include(${CMAKE_CURRENT_SOURCE_DIR}/../example.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/../example.cmake)
add_executable(demo main.cpp ${EXTRA_INCS}) add_executable(example main.cpp ${EXTRA_INCS})
target_link_libraries(demo ${EXTRA_LIBS}) target_link_libraries(example ${EXTRA_LIBS})
cmake_minimum_required(VERSION 3.0 FATAL_ERROR) cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(demo CXX) project(example CXX)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/../../example.cmake)
add_executable(demo main.cpp ${EXTRA_INCS}) add_executable(example main.cpp ${EXTRA_INCS})
target_link_libraries(demo ${EXTRA_LIBS}) 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