CMakeLists.txt (getdp-3.4.0-source.tgz) | : | CMakeLists.txt (getdp-3.5.0-source.tgz) | ||
---|---|---|---|---|
# GetDP - Copyright (C) 1997-2021 P. Dular and C. Geuzaine, University of Liege | # GetDP - Copyright (C) 1997-2022 P. Dular and C. Geuzaine, University of Liege | |||
# | # | |||
# See the LICENSE.txt file for license information. Please report all | # See the LICENSE.txt file for license information. Please report all | |||
# issues on https://gitlab.onelab.info/getdp/getdp/issues. | # issues on https://gitlab.onelab.info/getdp/getdp/issues. | |||
cmake_minimum_required(VERSION 3.3 FATAL_ERROR) | cmake_minimum_required(VERSION 3.3 FATAL_ERROR) | |||
# if CMAKE_BUILD_TYPE is specified use it; otherwise set the default | # if CMAKE_BUILD_TYPE is specified use it; otherwise set the default | |||
# build type to "RelWithDebInfo" ("-O2 -g" with gcc) prior to calling | # build type to "RelWithDebInfo" ("-O2 -g" with gcc) prior to calling | |||
# project() | # project() | |||
if(DEFINED CMAKE_BUILD_TYPE) | if(DEFINED CMAKE_BUILD_TYPE) | |||
skipping to change at line 37 | skipping to change at line 37 | |||
opt(ARPACK "Enable Arpack eigensolver (requires Fortran)" ${DEFAULT}) | opt(ARPACK "Enable Arpack eigensolver (requires Fortran)" ${DEFAULT}) | |||
opt(BLAS_LAPACK "Enable BLAS/Lapack for linear algebra (e.g. for Arpack)" ${DEFA ULT}) | opt(BLAS_LAPACK "Enable BLAS/Lapack for linear algebra (e.g. for Arpack)" ${DEFA ULT}) | |||
opt(BUILD_LIB "Enable 'lib' target for building static GetDP library" OFF) | opt(BUILD_LIB "Enable 'lib' target for building static GetDP library" OFF) | |||
opt(BUILD_SHARED "Enable 'shared' target for building shared GetDP library" OFF) | opt(BUILD_SHARED "Enable 'shared' target for building shared GetDP library" OFF) | |||
opt(BUILD_DYNAMIC "Enable dynamic GetDP executable (linked with shared lib)" OFF ) | opt(BUILD_DYNAMIC "Enable dynamic GetDP executable (linked with shared lib)" OFF ) | |||
opt(BUILD_ANDROID "Enable Android NDK library target (experimental)" OFF) | opt(BUILD_ANDROID "Enable Android NDK library target (experimental)" OFF) | |||
opt(BUILD_IOS "Enable iOS (ARM) library target (experimental)" OFF) | opt(BUILD_IOS "Enable iOS (ARM) library target (experimental)" OFF) | |||
opt(FORTRAN "Enable Fortran (needed for Arpack/Sparskit/Zitsol & Bessel)" ${DEFA ULT}) | opt(FORTRAN "Enable Fortran (needed for Arpack/Sparskit/Zitsol & Bessel)" ${DEFA ULT}) | |||
opt(GMSH "Enable Gmsh functions (for field interpolation)" ${DEFAULT}) | opt(GMSH "Enable Gmsh functions (for field interpolation)" ${DEFAULT}) | |||
opt(GSL "Enable GSL functions (for some built-in functions)" ${DEFAULT}) | opt(GSL "Enable GSL functions (for some built-in functions)" ${DEFAULT}) | |||
opt(HPDDM "Enable HPDDM support" ${DEFAULT}) | ||||
opt(KERNEL "Enable kernel (required for actual computations)" ON) | opt(KERNEL "Enable kernel (required for actual computations)" ON) | |||
opt(MMA "Enable MMA optimizer" ${DEFAULT}) | opt(MMA "Enable MMA optimizer" ${DEFAULT}) | |||
opt(MPI "Enable MPI parallelization (with PETSc/SLEPc)" OFF) | opt(MPI "Enable MPI parallelization (with PETSc/SLEPc)" OFF) | |||
opt(MULTIHARMONIC "Enable multi-harmonic support" OFF) | opt(MULTIHARMONIC "Enable multi-harmonic support" OFF) | |||
opt(NR "Enable NR functions (if GSL is unavailable)" ${DEFAULT}) | opt(NR "Enable NR functions (if GSL is unavailable)" ${DEFAULT}) | |||
opt(NX "Enable proprietary NX extension" OFF) | opt(NX "Enable proprietary NX extension" OFF) | |||
opt(OCTAVE "Enable Octave functions" OFF) | opt(OCTAVE "Enable Octave functions" OFF) | |||
opt(OPENMP "Enable OpenMP parallelization of some functions (experimental)" OFF) | opt(OPENMP "Enable OpenMP parallelization of some functions (experimental)" OFF) | |||
opt(PETSC "Enable PETSc linear solver" ${DEFAULT}) | opt(PETSC "Enable PETSc linear solver" ${DEFAULT}) | |||
opt(PRIVATE_API "Enable private API" OFF) | opt(PRIVATE_API "Enable private API" OFF) | |||
skipping to change at line 69 | skipping to change at line 68 | |||
else() | else() | |||
project(getdp CXX C) | project(getdp CXX C) | |||
endif() | endif() | |||
# require C++11 and request C99 | # require C++11 and request C99 | |||
set(CMAKE_CXX_STANDARD 11) | set(CMAKE_CXX_STANDARD 11) | |||
set(CMAKE_CXX_STANDARD_REQUIRED ON) | set(CMAKE_CXX_STANDARD_REQUIRED ON) | |||
set(CMAKE_C_STANDARD 99) | set(CMAKE_C_STANDARD 99) | |||
set(GETDP_MAJOR_VERSION 3) | set(GETDP_MAJOR_VERSION 3) | |||
set(GETDP_MINOR_VERSION 4) | set(GETDP_MINOR_VERSION 5) | |||
set(GETDP_PATCH_VERSION 0) | set(GETDP_PATCH_VERSION 0) | |||
set(GETDP_EXTRA_VERSION "") | set(GETDP_EXTRA_VERSION "") | |||
set(GETDP_EXTRA_VERSION_TEXI "${GETDP_EXTRA_VERSION}") | set(GETDP_EXTRA_VERSION_TEXI "${GETDP_EXTRA_VERSION}") | |||
if(NOT GETDP_RELEASE) | if(NOT GETDP_RELEASE) | |||
find_package(Git) | find_package(Git) | |||
if(GIT_FOUND) | if(GIT_FOUND) | |||
execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%h | execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%h | |||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ERROR_QUIET | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ERROR_QUIET | |||
OUTPUT_VARIABLE GIT_COMMIT_HASH | OUTPUT_VARIABLE GIT_COMMIT_HASH | |||
skipping to change at line 92 | skipping to change at line 91 | |||
if(GIT_COMMIT_HASH) | if(GIT_COMMIT_HASH) | |||
set(GETDP_EXTRA_VERSION "${GETDP_EXTRA_VERSION}-git-${GIT_COMMIT_HASH}") | set(GETDP_EXTRA_VERSION "${GETDP_EXTRA_VERSION}-git-${GIT_COMMIT_HASH}") | |||
endif() | endif() | |||
set(GETDP_EXTRA_VERSION_TEXI "${GETDP_EXTRA_VERSION_TEXI} (development version )") | set(GETDP_EXTRA_VERSION_TEXI "${GETDP_EXTRA_VERSION_TEXI} (development version )") | |||
endif() | endif() | |||
set(GETDP_VERSION "${GETDP_MAJOR_VERSION}.${GETDP_MINOR_VERSION}") | set(GETDP_VERSION "${GETDP_MAJOR_VERSION}.${GETDP_MINOR_VERSION}") | |||
set(GETDP_VERSION "${GETDP_VERSION}.${GETDP_PATCH_VERSION}${GETDP_EXTRA_VERSION} ") | set(GETDP_VERSION "${GETDP_VERSION}.${GETDP_PATCH_VERSION}${GETDP_EXTRA_VERSION} ") | |||
set(GETDP_SHORT_LICENSE "GNU General Public License") | set(GETDP_SHORT_LICENSE "GNU General Public License") | |||
set(GETDP_API Kernel/getdp.h) | set(GETDP_API src/kernel/getdp.h) | |||
if(ENABLE_PRIVATE_API) | if(ENABLE_PRIVATE_API) | |||
set(GETDP_PRIVATE_API Kernel/getdp.h | set(GETDP_PRIVATE_API src/kernel/getdp.h | |||
${CMAKE_CURRENT_BINARY_DIR}/Common/GetDPConfig.h | ${CMAKE_CURRENT_BINARY_DIR}/src/common/GetDPConfig.h | |||
${CMAKE_CURRENT_BINARY_DIR}/Common/GetDPVersion.h) | ${CMAKE_CURRENT_BINARY_DIR}/src/common/GetDPVersion.h) | |||
endif() | endif() | |||
if(${CMAKE_MAJOR_VERSION} GREATER 2) | if(${CMAKE_MAJOR_VERSION} GREATER 2) | |||
string(TIMESTAMP DATE "%Y%m%d") | string(TIMESTAMP DATE "%Y%m%d") | |||
else() | else() | |||
execute_process(COMMAND date "+%Y%m%d" OUTPUT_VARIABLE DATE | execute_process(COMMAND date "+%Y%m%d" OUTPUT_VARIABLE DATE | |||
OUTPUT_STRIP_TRAILING_WHITESPACE) | OUTPUT_STRIP_TRAILING_WHITESPACE) | |||
endif() | endif() | |||
if(NOT DATE) | if(NOT DATE) | |||
skipping to change at line 362 | skipping to change at line 361 | |||
if(LAPACK_FOUND) | if(LAPACK_FOUND) | |||
set_config_option(HAVE_LAPACK "Lapack") | set_config_option(HAVE_LAPACK "Lapack") | |||
else() | else() | |||
set(LAPACK_LIBRARIES ${BLAS_LIBRARIES}) | set(LAPACK_LIBRARIES ${BLAS_LIBRARIES}) | |||
endif() | endif() | |||
endif() | endif() | |||
endif() | endif() | |||
endif() | endif() | |||
endif() | endif() | |||
add_subdirectory(Common) | add_subdirectory(src/common) | |||
add_subdirectory(Interface) | add_subdirectory(src/interface) | |||
add_subdirectory(Numeric) | add_subdirectory(src/numeric) | |||
add_subdirectory(Functions) | add_subdirectory(src/functions) | |||
if(ENABLE_KERNEL AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Kernel) | if(ENABLE_KERNEL AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/kernel) | |||
add_subdirectory(Kernel) | add_subdirectory(src/kernel) | |||
set_config_option(HAVE_KERNEL "Kernel") | set_config_option(HAVE_KERNEL "Kernel") | |||
endif() | endif() | |||
if(ENABLE_MPI) | if(ENABLE_MPI) | |||
find_package(MPI) | find_package(MPI) | |||
if(MPI_FOUND) | if(MPI_FOUND) | |||
set_config_option(HAVE_MPI "MPI") | set_config_option(HAVE_MPI "MPI") | |||
list(APPEND EXTERNAL_INCLUDES ${MPI_CXX_INCLUDE_PATH}) | list(APPEND EXTERNAL_INCLUDES ${MPI_CXX_INCLUDE_PATH}) | |||
list(APPEND EXTERNAL_LIBRARIES ${MPI_CXX_LIBRARIES}) | list(APPEND EXTERNAL_LIBRARIES ${MPI_CXX_LIBRARIES}) | |||
set(CMAKE_C_COMPILER ${MPI_C_COMPILER}) | set(CMAKE_C_COMPILER ${MPI_C_COMPILER}) | |||
skipping to change at line 391 | skipping to change at line 390 | |||
endif() | endif() | |||
endif() | endif() | |||
if(ENABLE_GMSH) | if(ENABLE_GMSH) | |||
find_library(GMSH_LIB gmsh PATH_SUFFIXES lib) | find_library(GMSH_LIB gmsh PATH_SUFFIXES lib) | |||
# Currently GetDP uses the internal Gmsh developer API; this will be fixed | # Currently GetDP uses the internal Gmsh developer API; this will be fixed | |||
# as we move to the stable API. | # as we move to the stable API. | |||
find_path(GMSH_INC "gmsh/GmshGlobal.h" PATH_SUFFIXES include) | find_path(GMSH_INC "gmsh/GmshGlobal.h" PATH_SUFFIXES include) | |||
if(GMSH_LIB AND GMSH_INC) | if(GMSH_LIB AND GMSH_INC) | |||
list(APPEND EXTERNAL_LIBRARIES ${GMSH_LIB}) | list(APPEND EXTERNAL_LIBRARIES ${GMSH_LIB}) | |||
list(APPEND EXTERNAL_INCLUDES ${GMSH_INC}) | list(APPEND EXTERNAL_INCLUDES ${GMSH_INC} ${GMSH_INC}/gmsh) | |||
include_directories(contrib/eigen) | ||||
set_config_option(HAVE_GMSH "Gmsh") | set_config_option(HAVE_GMSH "Gmsh") | |||
endif() | endif() | |||
endif() | endif() | |||
if(ENABLE_SMALLFEM) | if(ENABLE_SMALLFEM) | |||
find_library(SMALLFEM_LIB sf PATH_SUFFIXES lib) | find_library(SMALLFEM_LIB sf PATH_SUFFIXES lib) | |||
find_path(SMALLFEM_INC "functionSpace/functionSpace.h" PATH_SUFFIXES include) | find_path(SMALLFEM_INC "functionSpace/functionSpace.h" PATH_SUFFIXES include) | |||
if(SMALLFEM_LIB AND SMALLFEM_INC) | if(SMALLFEM_LIB AND SMALLFEM_INC) | |||
list(APPEND EXTERNAL_LIBRARIES ${SMALLFEM_LIB}) | list(APPEND EXTERNAL_LIBRARIES ${SMALLFEM_LIB}) | |||
list(APPEND EXTERNAL_INCLUDES ${SMALLFEM_INC}) | list(APPEND EXTERNAL_INCLUDES ${SMALLFEM_INC}) | |||
skipping to change at line 541 | skipping to change at line 539 | |||
list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB}) | list(APPEND EXTERNAL_LIBRARIES ${SLEPC_LIB}) | |||
list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC}) | list(APPEND EXTERNAL_INCLUDES ${SLEPC_INC}) | |||
endif() | endif() | |||
endif() | endif() | |||
list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS}) | list(APPEND EXTERNAL_LIBRARIES ${PETSC_LIBS}) | |||
list(APPEND EXTERNAL_INCLUDES ${PETSC_INC}) | list(APPEND EXTERNAL_INCLUDES ${PETSC_INC}) | |||
endif() | endif() | |||
endif() | endif() | |||
endif() | endif() | |||
if(ENABLE_HPDDM) | ||||
find_path(HPDDM_INC "HPDDM.hpp" PATH_SUFFIXES include) | ||||
if(HPDDM_INC) | ||||
list(APPEND EXTERNAL_INCLUDES ${HPDDM_INC}) | ||||
set_config_option(HAVE_HPDDM "HPDDM") | ||||
endif() | ||||
endif() | ||||
if(ENABLE_FORTRAN) | if(ENABLE_FORTRAN) | |||
if(ENABLE_SPARSKIT AND NOT HAVE_PETSC AND | if(ENABLE_SPARSKIT AND NOT HAVE_PETSC AND | |||
EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/Sparskit) | EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/Sparskit) | |||
add_subdirectory(contrib/Sparskit) | add_subdirectory(contrib/Sparskit) | |||
include_directories(contrib/Sparskit) | include_directories(contrib/Sparskit) | |||
set_config_option(HAVE_SPARSKIT "Sparskit") | set_config_option(HAVE_SPARSKIT "Sparskit") | |||
file(GLOB_RECURSE SPARSKIT_SRC contrib/Sparskit/*.cpp contrib/Sparskit/*.f | file(GLOB_RECURSE SPARSKIT_SRC contrib/Sparskit/*.cpp contrib/Sparskit/*.f | |||
contrib/Sparskit/*.F) | contrib/Sparskit/*.F) | |||
set_compile_flags(SPARSKIT_SRC "-DHAVE_ILU_FLOAT") | set_compile_flags(SPARSKIT_SRC "-DHAVE_ILU_FLOAT") | |||
endif() | endif() | |||
skipping to change at line 576 | skipping to change at line 566 | |||
EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/ZITSOL_1) | EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/ZITSOL_1) | |||
add_subdirectory(contrib/ZITSOL_1) | add_subdirectory(contrib/ZITSOL_1) | |||
set_config_option(HAVE_ZITSOL "Zitsol") | set_config_option(HAVE_ZITSOL "Zitsol") | |||
endif() | endif() | |||
if(ENABLE_ARPACK) | if(ENABLE_ARPACK) | |||
if(ENABLE_SYSTEM_CONTRIB) | if(ENABLE_SYSTEM_CONTRIB) | |||
find_library(ARPACK_LIB arpack PATH_SUFFIXES lib) | find_library(ARPACK_LIB arpack PATH_SUFFIXES lib) | |||
if(ARPACK_LIB) | if(ARPACK_LIB) | |||
list(APPEND EXTERNAL_LIBRARIES ${ARPACK_LIB}) | list(APPEND EXTERNAL_LIBRARIES ${ARPACK_LIB}) | |||
set_config_option(HAVE_ARPACK "Arpack[system]") | set_config_option(HAVE_ARPACK "Arpack") | |||
endif() | endif() | |||
endif() | endif() | |||
if(NOT HAVE_ARPACK AND (HAVE_LAPACK OR HAVE_PETSC) AND | if(NOT HAVE_ARPACK AND (HAVE_LAPACK OR HAVE_PETSC) AND | |||
EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/Arpack) | EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/Arpack) | |||
# GCC 10 does not allow argument mismatches in a single file; this feature | # GCC 10 does not allow argument mismatches in a single file; this feature | |||
# is used in Arpack to e.g. scalars and vectors using the same routine | # is used in Arpack to e.g. scalars and vectors using the same routine | |||
# (e.g. svout) | # (e.g. svout) | |||
check_fortran_compiler_flag("-fallow-argument-mismatch" ARGMISMATCH) | check_fortran_compiler_flag("-fallow-argument-mismatch" ARGMISMATCH) | |||
if(ARGMISMATCH) | if(ARGMISMATCH) | |||
file(GLOB_RECURSE ARPACK_SRC contrib/Arpack/*.f) | file(GLOB_RECURSE ARPACK_SRC contrib/Arpack/*.f) | |||
set_compile_flags(ARPACK_SRC "-fallow-argument-mismatch") | set_compile_flags(ARPACK_SRC "-fallow-argument-mismatch") | |||
endif() | endif() | |||
add_subdirectory(contrib/Arpack) | add_subdirectory(contrib/Arpack) | |||
set_config_option(HAVE_ARPACK "Arpack") | set_config_option(HAVE_ARPACK "Arpack[contrib]") | |||
endif() | endif() | |||
endif() | endif() | |||
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU") | if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU") | |||
if(CMAKE_Fortran_COMPILER MATCHES "g77") | if(CMAKE_Fortran_COMPILER MATCHES "g77") | |||
list(APPEND LAPACK_LIBRARIES -lg2c) | list(APPEND LAPACK_LIBRARIES -lg2c) | |||
elseif(NOT EXTERNAL_LIBRARIES MATCHES "gfortran") | elseif(NOT EXTERNAL_LIBRARIES MATCHES "gfortran") | |||
list(APPEND LAPACK_LIBRARIES -lgfortran) | list(APPEND LAPACK_LIBRARIES -lgfortran) | |||
endif() | endif() | |||
endif() | endif() | |||
skipping to change at line 713 | skipping to change at line 703 | |||
# disable compile optimization on some known problematic files | # disable compile optimization on some known problematic files | |||
check_cxx_compiler_flag("-O0" NOOPT) | check_cxx_compiler_flag("-O0" NOOPT) | |||
if(NOOPT OR ENABLE_BUILD_IOS) | if(NOOPT OR ENABLE_BUILD_IOS) | |||
file(GLOB_RECURSE NON_OPTIMIZED_SRC contrib/NR/*.cpp) | file(GLOB_RECURSE NON_OPTIMIZED_SRC contrib/NR/*.cpp) | |||
set_compile_flags(NON_OPTIMIZED_SRC "-O0") | set_compile_flags(NON_OPTIMIZED_SRC "-O0") | |||
endif() | endif() | |||
# force full warnings to encourage everybody to write clean(er) code | # force full warnings to encourage everybody to write clean(er) code | |||
check_cxx_compiler_flag("-Wall" WALL) | check_cxx_compiler_flag("-Wall" WALL) | |||
if(WALL AND NOT MSVC) | if(WALL AND NOT MSVC) | |||
file(GLOB_RECURSE WALL_SRC Common/*.cpp Interface/*.cpp Kernel/*.cpp | file(GLOB_RECURSE WALL_SRC src/common/*.cpp src/interface/*.cpp src/kernel/*.c | |||
Main/*.cpp Numeric/*.cpp Functions/*.cpp) | pp | |||
src/main/*.cpp src/numeric/*.cpp src/functions/*.cpp) | ||||
set(WF "-Wall") | set(WF "-Wall") | |||
check_cxx_compiler_flag("-Wmisleading-indentation" WIND) | check_cxx_compiler_flag("-Wmisleading-indentation" WIND) | |||
if(WIND) | if(WIND) | |||
set(WF "${WF} -Wno-misleading-indentation") | set(WF "${WF} -Wno-misleading-indentation") | |||
endif() | endif() | |||
set_compile_flags(WALL_SRC ${WF}) | set_compile_flags(WALL_SRC ${WF}) | |||
endif() | endif() | |||
# don't issue warnings for contributed libraries | # don't issue warnings for contributed libraries | |||
check_cxx_compiler_flag("-w" NOWARN) | check_cxx_compiler_flag("-w" NOWARN) | |||
skipping to change at line 736 | skipping to change at line 726 | |||
file(GLOB_RECURSE NOWARN_SRC contrib/*.cpp contrib/*.c contrib/*.f) | file(GLOB_RECURSE NOWARN_SRC contrib/*.cpp contrib/*.c contrib/*.f) | |||
set_compile_flags(NOWARN_SRC "-w") | set_compile_flags(NOWARN_SRC "-w") | |||
endif() | endif() | |||
list(SORT CONFIG_OPTIONS) | list(SORT CONFIG_OPTIONS) | |||
set(GETDP_CONFIG_OPTIONS "") | set(GETDP_CONFIG_OPTIONS "") | |||
foreach(OPT ${CONFIG_OPTIONS}) | foreach(OPT ${CONFIG_OPTIONS}) | |||
set(GETDP_CONFIG_OPTIONS "${GETDP_CONFIG_OPTIONS} ${OPT}") | set(GETDP_CONFIG_OPTIONS "${GETDP_CONFIG_OPTIONS} ${OPT}") | |||
endforeach() | endforeach() | |||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Common/GetDPConfig.h.in | configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/common/GetDPConfig.h.in | |||
${CMAKE_CURRENT_BINARY_DIR}/Common/GetDPConfig.h) | ${CMAKE_CURRENT_BINARY_DIR}/src/common/GetDPConfig.h) | |||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Common/GetDPVersion.h.in | configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/common/GetDPVersion.h.in | |||
${CMAKE_CURRENT_BINARY_DIR}/Common/GetDPVersion.h) | ${CMAKE_CURRENT_BINARY_DIR}/src/common/GetDPVersion.h) | |||
# the texi file is modified in the source directory (not ideal, but since git | # the texi file is modified in the source directory (not ideal, but since git | |||
# tracks the contents of the file this is acceptable as it will only change when | # tracks the contents of the file this is acceptable as it will only change when | |||
# the actual version is changed - not for each git hash) | # the actual version is changed - not for each git hash) | |||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo/version.texi.in | configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo/version.texi.in | |||
${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo/version.texi) | ${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo/version.texi) | |||
# process cmake environment variables so we can append them to the -I | # process cmake environment variables so we can append them to the -I | |||
# include commands. This is not recommended (we should only use the | # include commands. This is not recommended (we should only use the | |||
# cache variables) but it is very convenient: otherwise we have to | # cache variables) but it is very convenient: otherwise we have to | |||
skipping to change at line 790 | skipping to change at line 780 | |||
message(STATUS "Using static libgfortran") | message(STATUS "Using static libgfortran") | |||
foreach(STR ${LINK_LIBRARIES}) | foreach(STR ${LINK_LIBRARIES}) | |||
string(REPLACE "-lgfortran" ${GFORTRAN_STATIC} STR2 ${STR}) | string(REPLACE "-lgfortran" ${GFORTRAN_STATIC} STR2 ${STR}) | |||
list(APPEND LINK_LIBRARIES2 ${STR2}) | list(APPEND LINK_LIBRARIES2 ${STR2}) | |||
endforeach() | endforeach() | |||
set(LINK_LIBRARIES ${LINK_LIBRARIES2}) | set(LINK_LIBRARIES ${LINK_LIBRARIES2}) | |||
endif() | endif() | |||
endif() | endif() | |||
# we could specify include dirs more selectively, but this is simpler | # we could specify include dirs more selectively, but this is simpler | |||
include_directories(Common Interface Kernel Numeric Functions | include_directories(src/common src/interface src/kernel src/numeric src/function | |||
${EXTERNAL_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}/Common) | s | |||
${EXTERNAL_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}/src/common) | ||||
# set this for external codes that might include this CMakeList file | # set this for external codes that might include this CMakeList file | |||
set(GETDP_EXTERNAL_INCLUDE_DIRS ${EXTERNAL_INCLUDES} CACHE | set(GETDP_EXTERNAL_INCLUDE_DIRS ${EXTERNAL_INCLUDES} CACHE | |||
STRING "External include directories" FORCE) | STRING "External include directories" FORCE) | |||
set(GETDP_EXTERNAL_LIBRARIES ${EXTERNAL_LIBRARIES} CACHE | set(GETDP_EXTERNAL_LIBRARIES ${EXTERNAL_LIBRARIES} CACHE | |||
STRING "External libraries" FORCE) | STRING "External libraries" FORCE) | |||
# group sources for easier navigation in IDEs | # group sources for easier navigation in IDEs | |||
foreach(DIR ${GETDP_DIRS}) | foreach(DIR ${GETDP_DIRS}) | |||
string(REGEX REPLACE "\\+" "\\\\+" DIR ${DIR}) | string(REGEX REPLACE "\\+" "\\\\+" DIR ${DIR}) | |||
skipping to change at line 858 | skipping to change at line 848 | |||
add_definitions(-DBUILD_ANDROID -DHAVE_SMALL_STACK) | add_definitions(-DBUILD_ANDROID -DHAVE_SMALL_STACK) | |||
add_library(androidGetdp SHARED ${GETDP_SRC}) | add_library(androidGetdp SHARED ${GETDP_SRC}) | |||
set_target_properties(androidGetdp PROPERTIES OUTPUT_NAME getdp) | set_target_properties(androidGetdp PROPERTIES OUTPUT_NAME getdp) | |||
target_link_libraries(androidGetdp ${LINK_LIBRARIES} ${LIBRARY_DEPS}) | target_link_libraries(androidGetdp ${LINK_LIBRARIES} ${LIBRARY_DEPS}) | |||
add_custom_command(TARGET androidGetdp POST_BUILD COMMAND | add_custom_command(TARGET androidGetdp POST_BUILD COMMAND | |||
${CMAKE_STRIP} ${LIBRARY_OUTPUT_PATH}/libgetdp.so) | ${CMAKE_STRIP} ${LIBRARY_OUTPUT_PATH}/libgetdp.so) | |||
endif() | endif() | |||
# binary target | # binary target | |||
if(ENABLE_BUILD_DYNAMIC) | if(ENABLE_BUILD_DYNAMIC) | |||
add_executable(getdp Main/Main.cpp) | add_executable(getdp src/main/Main.cpp) | |||
target_link_libraries(getdp shared) | target_link_libraries(getdp shared) | |||
else() | else() | |||
add_executable(getdp Main/Main.cpp ${GETDP_SRC}) | add_executable(getdp src/main/Main.cpp ${GETDP_SRC}) | |||
target_link_libraries(getdp ${LINK_LIBRARIES}) | target_link_libraries(getdp ${LINK_LIBRARIES}) | |||
endif() | endif() | |||
# Windows specific linker options | # Windows specific linker options | |||
if(WIN32 AND NOT MSVC OR CYGWIN) | if(WIN32 AND NOT MSVC OR CYGWIN) | |||
set(FLAGS "-Wl,--image-base -Wl,0x10000000 -static") | set(FLAGS "-Wl,--image-base -Wl,0x10000000 -static") | |||
set_target_properties(getdp PROPERTIES LINK_FLAGS "${FLAGS} -municode") | set_target_properties(getdp PROPERTIES LINK_FLAGS "${FLAGS} -municode") | |||
if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) | if(ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) | |||
set_target_properties(shared PROPERTIES LINK_FLAGS "${FLAGS}") | set_target_properties(shared PROPERTIES LINK_FLAGS "${FLAGS}") | |||
# remove -Wl,-Bdynamic flags | # remove -Wl,-Bdynamic flags | |||
skipping to change at line 884 | skipping to change at line 874 | |||
endif() | endif() | |||
endif() | endif() | |||
# parser target | # parser target | |||
find_program(BISON bison) | find_program(BISON bison) | |||
find_program(FLEX flex) | find_program(FLEX flex) | |||
if(BISON AND FLEX) | if(BISON AND FLEX) | |||
add_custom_target(parser | add_custom_target(parser | |||
COMMAND ${BISON} -p getdp_yy --output ProParser.tab.cpp -d P roParser.y | COMMAND ${BISON} -p getdp_yy --output ProParser.tab.cpp -d P roParser.y | |||
COMMAND ${FLEX} -P getdp_yy -o ProParser.yy.cpp ProParser.l | COMMAND ${FLEX} -P getdp_yy -o ProParser.yy.cpp ProParser.l | |||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Interface) | WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src/interface) | |||
endif() | endif() | |||
# miscellaneaous targets | # miscellaneaous targets | |||
if(UNIX) | if(UNIX) | |||
# cannot use cmake's file search functions here (they would only | # cannot use cmake's file search functions here (they would only | |||
# find files existing at configuration time) | # find files existing at configuration time) | |||
add_custom_target(purge | add_custom_target(purge | |||
COMMAND rm -f `find . -name *~ -o -name *~~` | COMMAND rm -f `find . -name *~ -o -name *~~` | |||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) | WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) | |||
add_custom_target(etags | add_custom_target(etags | |||
COMMAND etags `find . -name *.cpp -o -name *.h -o -name *.y` | COMMAND etags `find . -name *.cpp -o -name *.h -o -name *.y` | |||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) | WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) | |||
endif() | endif() | |||
set(WELCOME_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/WELCOME.txt) | set(WELCOME_FILE ${CMAKE_CURRENT_SOURCE_DIR}/doc/WELCOME.txt) | |||
set(LICENSE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt) | set(LICENSE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt) | |||
set(CREDITS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CREDITS.txt) | set(CREDITS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CREDITS.txt) | |||
set(CHANGELOG_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CHANGELOG.txt) | set(CHANGELOG_FILE ${CMAKE_CURRENT_SOURCE_DIR}/CHANGELOG.txt) | |||
file(GLOB DEMO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/demos/*.pro | file(GLOB EXAMPLE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/examples/*.pro | |||
${CMAKE_CURRENT_SOURCE_DIR}/demos/*.geo | ${CMAKE_CURRENT_SOURCE_DIR}/examples/*.geo | |||
${CMAKE_CURRENT_SOURCE_DIR}/demos/*.msh) | ${CMAKE_CURRENT_SOURCE_DIR}/examples/*.msh) | |||
file(GLOB TEMPLATE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/templates/*.pro | file(GLOB TEMPLATE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/templates/*.pro | |||
${CMAKE_CURRENT_SOURCE_DIR}/templates/*.txt) | ${CMAKE_CURRENT_SOURCE_DIR}/templates/*.txt) | |||
file(GLOB DEMO_FILES_TMP ${CMAKE_CURRENT_SOURCE_DIR}/demos/*.pre | file(GLOB EXAMPLE_FILES_TMP ${CMAKE_CURRENT_SOURCE_DIR}/examples/*.pre | |||
${CMAKE_CURRENT_SOURCE_DIR}/demos/*.res | ${CMAKE_CURRENT_SOURCE_DIR}/examples/*.res | |||
${CMAKE_CURRENT_SOURCE_DIR}/demos/*.txt | ${CMAKE_CURRENT_SOURCE_DIR}/examples/*.txt | |||
${CMAKE_CURRENT_SOURCE_DIR}/demos/*.pos | ${CMAKE_CURRENT_SOURCE_DIR}/examples/*.pos | |||
${CMAKE_CURRENT_SOURCE_DIR}/demos/*.par) | ${CMAKE_CURRENT_SOURCE_DIR}/examples/*.par) | |||
set(TEX_DIR ${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo) | set(TEX_DIR ${CMAKE_CURRENT_SOURCE_DIR}/doc/texinfo) | |||
file(GLOB TEX_SRC ${TEX_DIR}/*.texi) | file(GLOB TEX_SRC ${TEX_DIR}/*.texi) | |||
set(TEX_OBJ ${TEX_DIR}/getdp.aux ${TEX_DIR}/getdp.cp ${TEX_DIR}/getdp.cps | set(TEX_OBJ ${TEX_DIR}/getdp.aux ${TEX_DIR}/getdp.cp ${TEX_DIR}/getdp.cps | |||
${TEX_DIR}/getdp.fn ${TEX_DIR}/getdp.html ${TEX_DIR}/getdp.info ${TEX_DIR}/g etdp.ky | ${TEX_DIR}/getdp.fn ${TEX_DIR}/getdp.html ${TEX_DIR}/getdp.info ${TEX_DIR}/g etdp.ky | |||
${TEX_DIR}/getdp.log ${TEX_DIR}/getdp.pdf ${TEX_DIR}/getdp.pg ${TEX_DIR}/get dp.toc | ${TEX_DIR}/getdp.log ${TEX_DIR}/getdp.pdf ${TEX_DIR}/getdp.pg ${TEX_DIR}/get dp.toc | |||
${TEX_DIR}/getdp.tp ${TEX_DIR}/getdp.tps ${TEX_DIR}/getdp.txt ${TEX_DIR}/get dp.vr | ${TEX_DIR}/getdp.tp ${TEX_DIR}/getdp.tps ${TEX_DIR}/getdp.txt ${TEX_DIR}/get dp.vr | |||
${TEX_DIR}/getdp.vrs) | ${TEX_DIR}/getdp.vrs) | |||
macro(unix2dos VARNAME) | macro(unix2dos VARNAME) | |||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unix2dos) | file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unix2dos) | |||
skipping to change at line 951 | skipping to change at line 941 | |||
set(GETDP_DOC .) | set(GETDP_DOC .) | |||
set(GETDP_MAN .) | set(GETDP_MAN .) | |||
set(GETDP_INC .) | set(GETDP_INC .) | |||
if(CYGWIN) | if(CYGWIN) | |||
unix2dos(GETDP_API) | unix2dos(GETDP_API) | |||
unix2dos(GETDP_PRIVATE_API) | unix2dos(GETDP_PRIVATE_API) | |||
unix2dos(WELCOME_FILE) | unix2dos(WELCOME_FILE) | |||
unix2dos(LICENSE_FILE) | unix2dos(LICENSE_FILE) | |||
unix2dos(CREDITS_FILE) | unix2dos(CREDITS_FILE) | |||
unix2dos(CHANGELOG_FILE) | unix2dos(CHANGELOG_FILE) | |||
unix2dos(DEMO_FILES) | unix2dos(EXAMPLE_FILES) | |||
unix2dos(TEMPLATE_FILES) | unix2dos(TEMPLATE_FILES) | |||
endif() | endif() | |||
else() | else() | |||
include(GNUInstallDirs) | include(GNUInstallDirs) | |||
set(GETDP_BIN ${CMAKE_INSTALL_BINDIR}) | set(GETDP_BIN ${CMAKE_INSTALL_BINDIR}) | |||
set(GETDP_LIB ${CMAKE_INSTALL_LIBDIR}) | set(GETDP_LIB ${CMAKE_INSTALL_LIBDIR}) | |||
set(GETDP_DOC ${CMAKE_INSTALL_DOCDIR}) | set(GETDP_DOC ${CMAKE_INSTALL_DOCDIR}) | |||
set(GETDP_MAN ${CMAKE_INSTALL_MANDIR}/man1) | set(GETDP_MAN ${CMAKE_INSTALL_MANDIR}/man1) | |||
set(GETDP_INC ${CMAKE_INSTALL_INCLUDEDIR}) | set(GETDP_INC ${CMAKE_INSTALL_INCLUDEDIR}) | |||
endif() | endif() | |||
skipping to change at line 981 | skipping to change at line 971 | |||
endif() | endif() | |||
if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) | if(ENABLE_BUILD_LIB OR ENABLE_BUILD_SHARED OR ENABLE_BUILD_DYNAMIC) | |||
install(FILES ${GETDP_API} DESTINATION ${GETDP_INC}) | install(FILES ${GETDP_API} DESTINATION ${GETDP_INC}) | |||
if(ENABLE_PRIVATE_API) | if(ENABLE_PRIVATE_API) | |||
install(FILES ${GETDP_PRIVATE_API} DESTINATION ${GETDP_INC}/getdp) | install(FILES ${GETDP_PRIVATE_API} DESTINATION ${GETDP_INC}/getdp) | |||
endif() | endif() | |||
endif() | endif() | |||
install(FILES ${WELCOME_FILE} DESTINATION ${GETDP_DOC} RENAME README.txt) | install(FILES ${WELCOME_FILE} DESTINATION ${GETDP_DOC} RENAME README.txt) | |||
install(FILES ${LICENSE_FILE} DESTINATION ${GETDP_DOC}) | install(FILES ${LICENSE_FILE} DESTINATION ${GETDP_DOC}) | |||
install(FILES ${CREDITS_FILE} DESTINATION ${GETDP_DOC}) | install(FILES ${CREDITS_FILE} DESTINATION ${GETDP_DOC}) | |||
install(FILES ${DEMO_FILES} DESTINATION ${GETDP_DOC}/demos) | install(FILES ${EXAMPLE_FILES} DESTINATION ${GETDP_DOC}/examples) | |||
install(FILES ${TEMPLATE_FILES} DESTINATION ${GETDP_DOC}/templates) | install(FILES ${TEMPLATE_FILES} DESTINATION ${GETDP_DOC}/templates) | |||
if(UNIX AND NOT CYGWIN) | if(UNIX AND NOT CYGWIN) | |||
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/doc/getdp.1 DESTINATION ${GETDP_MAN} ) | install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/doc/getdp.1 DESTINATION ${GETDP_MAN} ) | |||
endif() | endif() | |||
if(ENABLE_WRAP_PYTHON) | if(ENABLE_WRAP_PYTHON) | |||
find_package(SWIG REQUIRED) | find_package(SWIG REQUIRED) | |||
include(${SWIG_USE_FILE}) | include(${SWIG_USE_FILE}) | |||
find_package(PythonLibs) | find_package(PythonLibs) | |||
if(SWIG_FOUND AND PYTHONLIBS_FOUND) | if(SWIG_FOUND AND PYTHONLIBS_FOUND) | |||
message(STATUS "Found SWIG version " ${SWIG_VERSION}) | message(STATUS "Found SWIG version " ${SWIG_VERSION}) | |||
include_directories(${PYTHON_INCLUDE_PATH}) | include_directories(${PYTHON_INCLUDE_PATH}) | |||
include_directories(${CMAKE_CURRENT_SOURCE_DIR}) | include_directories(${CMAKE_CURRENT_SOURCE_DIR}) | |||
set(CMAKE_SWIG_FLAGS "") | set(CMAKE_SWIG_FLAGS "") | |||
set_source_files_properties(Kernel/getdp.i PROPERTIES CPLUSPLUS ON) | set_source_files_properties(src/kernel/getdp.i PROPERTIES CPLUSPLUS ON) | |||
swig_add_module(getdp python Kernel/getdp.i) | swig_add_module(getdp python src/kernel/getdp.i) | |||
swig_link_libraries(getdp ${PYTHON_LIBRARIES} shared) | swig_link_libraries(getdp ${PYTHON_LIBRARIES} shared) | |||
if(APPLE) | if(APPLE) | |||
set_target_properties("_getdp" PROPERTIES LINK_FLAGS | set_target_properties("_getdp" PROPERTIES LINK_FLAGS | |||
"-undefined suppress -flat_namespace") | "-undefined suppress -flat_namespace") | |||
endif() | endif() | |||
endif() | endif() | |||
endif() | endif() | |||
add_custom_target(clean_demos COMMAND ${CMAKE_COMMAND} -E remove ${DEMO_FILES_TM P}) | add_custom_target(clean_examples COMMAND ${CMAKE_COMMAND} -E remove ${EXAMPLE_FI LES_TMP}) | |||
add_custom_target(get_headers | add_custom_target(get_headers | |||
COMMAND ${CMAKE_COMMAND} -E make_directory Headers/getdp | COMMAND ${CMAKE_COMMAND} -E make_directory Headers/getdp | |||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) | |||
foreach(FILE ${GETDP_API}) | foreach(FILE ${GETDP_API}) | |||
add_custom_command(TARGET get_headers POST_BUILD COMMAND ${CMAKE_COMMAND} | add_custom_command(TARGET get_headers POST_BUILD COMMAND ${CMAKE_COMMAND} | |||
-E copy_if_different ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/Headers/ | -E copy_if_different ${FILE} ${CMAKE_CURRENT_BINARY_DIR}/Headers/ | |||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) | WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) | |||
endforeach() | endforeach() | |||
if(ENABLE_PRIVATE_API) | if(ENABLE_PRIVATE_API) | |||
skipping to change at line 1139 | skipping to change at line 1129 | |||
set(CPACK_INSTALL_COMMANDS "rm -rf ${CMAKE_CURRENT_BINARY_DIR}/_CPack_Packages ") | set(CPACK_INSTALL_COMMANDS "rm -rf ${CMAKE_CURRENT_BINARY_DIR}/_CPack_Packages ") | |||
endif() | endif() | |||
if(WIN32 OR CYGWIN) | if(WIN32 OR CYGWIN) | |||
set(CPACK_GENERATOR ZIP) | set(CPACK_GENERATOR ZIP) | |||
else() | else() | |||
set(CPACK_GENERATOR TGZ) | set(CPACK_GENERATOR TGZ) | |||
endif() | endif() | |||
# code signing | # code signing | |||
if(APPLE AND PACKAGER STREQUAL "geuzaine") | set(APP _CPack_Packages/Darwin/TGZ/${CPACK_PACKAGE_FILE_NAME}/bin/getdp) | |||
if(APPLE AND EXISTS ${APP} AND PACKAGER STREQUAL "geuzaine") | ||||
set(CODESIGN "codesign -v -s \"Developer ID Application: Christophe Geuzaine\" ") | set(CODESIGN "codesign -v -s \"Developer ID Application: Christophe Geuzaine\" ") | |||
set(APPDIR _CPack_Packages/Darwin/TGZ/${CPACK_PACKAGE_FILE_NAME}/bin) | install(CODE "execute_process(COMMAND ${CODESIGN} ${APP})") | |||
install(CODE "execute_process(COMMAND ${CODESIGN} ${APPDIR}/getdp)") | ||||
endif() | endif() | |||
include(CPack) | include(CPack) | |||
# comprehensive getdp testing is done through in the onelab documentation | # comprehensive getdp testing is done through in the onelab documentation | |||
# project (as it also requires Gmsh) | # project (as it also requires Gmsh) | |||
include(CTest) | include(CTest) | |||
file(GLOB_RECURSE TESTS demos/magnet.pro) | file(GLOB_RECURSE TESTS examples/magnet.pro) | |||
foreach(TESTFILE ${TESTS}) | foreach(TESTFILE ${TESTS}) | |||
# use relative path for Cygwin/MinGW (the pure win exe built with the mingw | # use relative path for Cygwin/MinGW (the pure win exe built with the mingw | |||
# compilers does not understand a full Cygwin-style path) | # compilers does not understand a full Cygwin-style path) | |||
FILE(RELATIVE_PATH TEST ${CMAKE_CURRENT_BINARY_DIR} ${TESTFILE}) | FILE(RELATIVE_PATH TEST ${CMAKE_CURRENT_BINARY_DIR} ${TESTFILE}) | |||
add_test(${TEST} getdp ${TEST} -solve \#1 -pos \#1) | add_test(${TEST} getdp ${TEST} -solve \#1 -pos \#1) | |||
endforeach() | endforeach() | |||
message(STATUS "") | message(STATUS "") | |||
message(STATUS "GetDP ${GETDP_VERSION} has been configured for ${GETDP_OS}:") | message(STATUS "GetDP ${GETDP_VERSION} has been configured for ${GETDP_OS}:") | |||
message(STATUS "") | message(STATUS "") | |||
End of changes. 26 change blocks. | ||||
53 lines changed or deleted | 45 lines changed or added |