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 114 115 116 117 118
|
# ---------------------------------------------------------------
# Programmer(s): Ting Yan @ SMU
# ---------------------------------------------------------------
# SUNDIALS Copyright Start
# Copyright (c) 2002-2024, Lawrence Livermore National Security
# and Southern Methodist University.
# All rights reserved.
#
# See the top-level LICENSE and NOTICE files for details.
#
# SPDX-License-Identifier: BSD-3-Clause
# SUNDIALS Copyright End
# -----------------------------------------------------------------
# CMakeLists.txt file for IDA OpenMP examples
# -----------------------------------------------------------------
# Example lists are tuples "name\;args\;type" where the type is
# 'develop' for examples excluded from 'make test' in releases
# Examples using SUNDIALS linear solvers
set(IDA_examples
# "idaFoodWeb_bnd_omp\;4\;develop"
"idaFoodWeb_kry_omp\;4\;develop"
)
# Specify libraries to link against
set(IDA_LIB sundials_ida)
set(NVECS_LIB sundials_nvecopenmp)
# Set-up linker flags and link libraries
set(SUNDIALS_LIBS ${IDA_LIB} ${NVECS_LIB} ${EXE_EXTRA_LINK_LIBS})
# Add the build and install targets for each example
foreach(example_tuple ${IDA_examples})
# parse the example tuple
list(GET example_tuple 0 example)
list(GET example_tuple 1 example_args)
list(GET example_tuple 2 example_type)
# example source files
add_executable(${example} ${example}.c)
set_target_properties(${example} PROPERTIES FOLDER "Examples")
if (NOT ${example} MATCHES "idaFoodWeb_kry_omp")
# add example to regression tests
sundials_add_test(${example} ${example}
TEST_ARGS ${example_args}
ANSWER_DIR ${CMAKE_CURRENT_SOURCE_DIR}
ANSWER_FILE ${example}.out
EXAMPLE_TYPE ${example_type})
endif()
# libraries to link against
target_link_libraries(${example} ${SUNDIALS_LIBS})
# install example source and out files
if(EXAMPLES_INSTALL)
install(FILES ${example}.c ${example}.out
DESTINATION ${EXAMPLES_INSTALL_PATH}/ida/C_openmp)
endif()
endforeach(example_tuple ${IDA_examples})
# create Makfile and CMakeLists.txt for examples
if(EXAMPLES_INSTALL)
# Install the README file
install(FILES README DESTINATION ${EXAMPLES_INSTALL_PATH}/ida/C_openmp)
# Prepare substitution variables for Makefile and/or CMakeLists templates
set(SOLVER "IDA")
set(SOLVER_LIB "sundials_ida")
examples2string(IDA_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_openmp_C_ex.in
${PROJECT_BINARY_DIR}/examples/ida/C_openmp/CMakeLists.txt
@ONLY
)
# install CMakelists.txt
install(
FILES ${PROJECT_BINARY_DIR}/examples/ida/C_openmp/CMakeLists.txt
DESTINATION ${EXAMPLES_INSTALL_PATH}/ida/C_openmp
)
# 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_openmp_C_ex.in
${PROJECT_BINARY_DIR}/examples/ida/C_openmp/Makefile_ex
@ONLY
)
# install the configured Makefile_ex as Makefile
install(
FILES ${PROJECT_BINARY_DIR}/examples/ida/C_openmp/Makefile_ex
DESTINATION ${EXAMPLES_INSTALL_PATH}/ida/C_openmp
RENAME Makefile
)
endif()
# add test_install target
sundials_add_test_install(ida C_openmp)
endif()
|