Skip to content

Commit feeb48e

Browse files
committed
Merge pull request #4 from torbjoernk/feature/cmake
enabled CMake for examples
2 parents 91f5dca + c074495 commit feeb48e

File tree

6 files changed

+65
-9
lines changed

6 files changed

+65
-9
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ before_script:
2626
script:
2727
- mkdir build
2828
- cd build
29-
- cmake -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -Dpfasst_DISABLE_LIBCXX=ON -Dpfasst_BUILD_TESTS=ON ..
29+
- cmake -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -Dpfasst_DISABLE_LIBCXX=ON -Dpfasst_BUILD_TESTS=ON -Dpfasst_BUILD_EXAMPLES=ON ..
3030
- make
3131
- make test
3232

3rdparty/CMakeLists.txt

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,42 @@
11
# Managing 3rd-party libraries and tools
22
set(3rdparty_INCLUDES ${3rdparty_INCLUDES})
33
set(3rdparty_DEPENDEND_LIBS ${3rdparty_DEPENDEND_LIBS})
4+
message(STATUS "--------------------------------------------------------------------------------")
5+
6+
if(pfasst_BUILD_EXAMPLES)
7+
message(STATUS "FFTW3")
8+
set(fftw3_SOURCE_DIR "${pfasst_BINARY_DIR}/3rdparty/src/fftw3")
9+
set(fftw3_INSTALL_DIR "${pfasst_BINARY_DIR}/3rdparty/src/fftw3-install")
10+
11+
ExternalProject_Add(
12+
fftw3
13+
LIST_SEPARATOR " "
14+
URL http://fftw.org/fftw-3.3.4.tar.gz
15+
URL_MD5 2edab8c06b24feeb3b82bbb3ebf3e7b3
16+
TIMEOUT 10
17+
UPDATE_COMMAND ""
18+
PATCH_COMMAND ""
19+
BUILD_IN_SOURCE ON
20+
CONFIGURE_COMMAND ${fftw3_SOURCE_DIR}/configure CC=${CMAKE_C_COMPILER} --prefix=${fftw3_INSTALL_DIR} --libdir=${fftw3_INSTALL_DIR}/lib CXX=${CMAKE_CXX_COMPILER}
21+
BUILD_COMMAND make
22+
TEST_COMMAND ""
23+
INSTALL_DIR ${fftw3_SOURCE_DIR}-install
24+
INSTALL_COMMAND make install
25+
LOG_DOWNLOAD ON
26+
LOG_CONFIGURE ON
27+
LOG_BUILD ON
28+
)
29+
# Specify include dir
30+
set(fftw3_INCLUDES ${fftw3_INSTALL_DIR}/include PARENT_SCOPE)
31+
set(fftw3_LIBS ${fftw3_INSTALL_DIR}/lib/libfftw3.a PARENT_SCOPE)
32+
33+
if(pfasst_BUILD_TESTS)
34+
message(STATUS "--------------------------------------------------------------------------------")
35+
endif()
36+
endif()
437

538
if(pfasst_BUILD_TESTS)
6-
message(STATUS "3rd party: Google Testing Framework (gtest & gmock)")
7-
message(STATUS "--------------------------------------------------------------------------------")
39+
message(STATUS "Google Testing Framework (gtest & gmock)")
840

941
# Add gmock
1042
ExternalProject_Add(
@@ -17,7 +49,6 @@ if(pfasst_BUILD_TESTS)
1749
PATCH_COMMAND ""
1850
CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release
1951
-Dgtest_force_shared_crt=ON
20-
-DCMAKE_VERBOSE_MAKEFILE=ON
2152
-Dgmock_build_tests=${gtest_BUILD_TESTS}
2253
# Disable install step
2354
INSTALL_COMMAND ""
@@ -37,8 +68,6 @@ if(pfasst_BUILD_TESTS)
3768

3869
list(APPEND 3rdparty_DEPENDEND_LIBS ${binary_dir}/${CMAKE_FIND_LIBRARY_PREFIXES}gmock${Suffix})
3970
list(APPEND 3rdparty_DEPENDEND_LIBS ${Pthread})
40-
41-
message(STATUS "--------------------------------------------------------------------------------")
4271
endif()
4372

4473
# propagate include lists to parent directory

CMakeLists.txt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ include(ExternalProject)
1111
set_directory_properties(PROPERTIES EP_PREFIX ${CMAKE_BINARY_DIR}/3rdparty)
1212

1313
option(pfasst_DISABLE_LIBCXX "Disable use of LLVM's libstdc++ when compiling with Clang." ON)
14+
option(pfasst_BUILD_EXAMPLES "Build example programs." ON)
1415
option(pfasst_BUILD_TESTS "Build test suite for PFASST." ON)
1516

1617
# check for C++11 support
17-
message(STATUS "Testing Compiler for C++11 Support ...")
1818
if(${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
1919
check_cxx_compiler_flag(-std=c++11 HAVE_STD11)
2020
if(HAVE_STD11)
@@ -55,12 +55,21 @@ endif(pfasst_BUILD_TESTS)
5555
# adding / including 3rd-party libraries
5656
message(STATUS "********************************************************************************")
5757
message(STATUS "Configuring 3rd party libraries")
58+
# makes available:
59+
# - fftw3_INCLUDES (if pfasst_BUILD_EXAMPLES)
60+
# - fftw3_LIBS (if pfasst_BUILD_EXAMPLES)
5861
add_subdirectory(3rdparty)
5962

6063
message(STATUS "********************************************************************************")
6164
message(STATUS "Configuring sources")
6265
add_subdirectory(src)
6366

67+
if(pfasst_BUILD_EXAMPLES)
68+
message(STATUS "********************************************************************************")
69+
message(STATUS "Configuring examples")
70+
add_subdirectory(examples)
71+
endif()
72+
6473
if(pfasst_BUILD_TESTS)
6574
message(STATUS "********************************************************************************")
6675
message(STATUS "Configuring tests")
@@ -71,5 +80,3 @@ message(STATUS "****************************************************************
7180
message(STATUS "C++ Compiler ID: ${CMAKE_CXX_COMPILER_ID}")
7281
message(STATUS "C++ Flags: ${CMAKE_CXX_FLAGS}")
7382
message(STATUS "C++ link flags: ${CMAKE_CXX_LINK_FLAGS}")
74-
75-
set(CMAKE_VERBOSE_MAKEFILE ON)

examples/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
add_subdirectory(ad)

examples/ad/CMakeLists.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
message(STATUS " advection")
2+
include_directories(
3+
${fftw3_INCLUDES}
4+
${pfasst_INCLUDES}
5+
)
6+
7+
set(advection_SOURCES
8+
${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
9+
)
10+
11+
add_executable(advection ${advection_SOURCES})
12+
add_dependencies(advection fftw3)
13+
target_link_libraries(advection
14+
${fftw3_LIBS}
15+
)
16+
set_target_properties(advection
17+
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${pfasst_BINARY_DIR}/examples
18+
)

tests/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ set(TESTS
99
)
1010

1111
foreach(test ${TESTS})
12+
message(STATUS " ${test}")
1213
add_executable(${test} ${test}.cpp)
1314
add_dependencies(${test} googlemock)
1415
target_link_libraries(${test}

0 commit comments

Comments
 (0)