1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
# ---------------------------------------------------------------
# $Revision: 1.4 $
# $Date: 2009/02/17 02:58:47 $
# ---------------------------------------------------------------
# Programmer: Radu Serban @ LLNL
# ---------------------------------------------------------------
# Copyright (c) 2007, The Regents of the University of California.
# Produced at the Lawrence Livermore National Laboratory.
# All rights reserved.
# For details, see the LICENSE file.
# ---------------------------------------------------------------
# CMakeLists.txt file for CVODE parallel examples
# Add variable CVODE_examples with the names of the parallel CVODE examples
SET(CVODE_examples
cvAdvDiff_non_p
cvDiurnal_kry_bbd_p
cvDiurnal_kry_p
)
# Check whether we use MPI compiler scripts.
# If yes, then change the C compiler to the MPICC script.
# If not, then add the MPI include directory for MPI headers.
IF(MPI_MPICC)
# use MPI_MPICC as the compiler
SET(CMAKE_C_COMPILER ${MPI_MPICC})
ELSE(MPI_MPICC)
# add MPI_INCLUDE_PATH to include directories
INCLUDE_DIRECTORIES(${MPI_INCLUDE_PATH})
ENDIF(MPI_MPICC)
# Specify libraries to link against (through the target that was used to
# generate them) based on the value of the variable LINK_LIBRARY_TYPE
IF(LINK_LIBRARY_TYPE MATCHES "static")
SET(CVODE_LIB sundials_cvode_static)
SET(NVECP_LIB sundials_nvecparallel_static)
ELSE(LINK_LIBRARY_TYPE MATCHES "static")
SET(CVODE_LIB sundials_cvode_shared)
SET(NVECP_LIB sundials_nvecparallel_shared)
ENDIF(LINK_LIBRARY_TYPE MATCHES "static")
# Set-up linker flags and link libraries
SET(SUNDIALS_LIBS ${CVODE_LIB} ${NVECP_LIB} ${EXTRA_LINK_LIBS})
IF(LAPACK_FOUND)
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LAPACK_LINKER_FLAGS}")
SET(SUNDIALS_LIBS "${SUNDIALS_LIBS} ${LAPACK_LIBRARIES}")
ENDIF(LAPACK_FOUND)
# Add the build and install targets for each CVODE example
FOREACH(example ${CVODE_examples})
ADD_EXECUTABLE(${example} ${example}.c)
TARGET_LINK_LIBRARIES(${example} ${SUNDIALS_LIBS})
IF(NOT MPI_MPICC)
TARGET_LINK_LIBRARIES(${example} ${MPI_LIBRARY} ${MPI_EXTRA_LIBRARIES})
ENDIF(NOT MPI_MPICC)
IF(EXAMPLES_INSTALL)
INSTALL(FILES ${example}.c ${example}.out DESTINATION ${EXAMPLES_INSTALL_PATH}/cvode/parallel)
ENDIF(EXAMPLES_INSTALL)
ENDFOREACH(example ${CVODE_examples})
IF(EXAMPLES_INSTALL)
# Install the README file
INSTALL(FILES README DESTINATION ${EXAMPLES_INSTALL_PATH}/cvode/parallel)
# Prepare substitution variables for Makefile and/or CMakeLists templates
SET(SOLVER "CVODE")
SET(SOLVER_LIB "sundials_cvode")
LIST2STRING(CVODE_examples EXAMPLES)
# Regardless of the platform we're on, we will generate and install
# CMakeLists.txt file for building the examples. This file can then
# be used as a template for the user's own programs.
# generate CMakelists.txt in the binary directory
CONFIGURE_FILE(
${PROJECT_SOURCE_DIR}/examples/templates/cmakelists_parallel_C_ex.in
${PROJECT_BINARY_DIR}/examples/cvode/parallel/CMakeLists.txt
@ONLY
)
# install CMakelists.txt
INSTALL(
FILES ${PROJECT_BINARY_DIR}/examples/cvode/parallel/CMakeLists.txt
DESTINATION ${EXAMPLES_INSTALL_PATH}/cvode/parallel
)
# On UNIX-type platforms, we also generate and install a makefile for
# building the examples. This makefile can then be used as a template
# for the user's own programs.
IF(UNIX)
# generate Makefile and place it in the binary dir
CONFIGURE_FILE(
${PROJECT_SOURCE_DIR}/examples/templates/makefile_parallel_C_ex.in
${PROJECT_BINARY_DIR}/examples/cvode/parallel/Makefile_ex
@ONLY
)
# install the configured Makefile_ex as Makefile
INSTALL(
FILES ${PROJECT_BINARY_DIR}/examples/cvode/parallel/Makefile_ex
DESTINATION ${EXAMPLES_INSTALL_PATH}/cvode/parallel
RENAME Makefile
)
ENDIF(UNIX)
ENDIF(EXAMPLES_INSTALL)
|