Skip to content

Commit efa1ff4

Browse files
committed
Merge pull request #126 from torbjoernk/feature/fix-cmake
fixing #124 and some improvements to 3rdparty configuration
2 parents 4d5d3fa + b262338 commit efa1ff4

File tree

5 files changed

+87
-89
lines changed

5 files changed

+87
-89
lines changed

3rdparty/CMakeLists.txt

Lines changed: 53 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ set(3rdparty_INCLUDES ${3rdparty_INCLUDES})
33
set(3rdparty_DEPENDEND_LIBS ${3rdparty_DEPENDEND_LIBS})
44
set(pfasst_DEPENDEND_TARGETS ${pfasst_DEPENDEND_TARGETS})
55

6+
set(3rdparty_DOWNLOAD_TIMEOUT "60")
7+
68
message(STATUS "--------------------------------------------------------------------------------")
79
message(STATUS "Boost")
810

@@ -35,23 +37,25 @@ set_package_properties(Eigen3
3537
PROPERTIES
3638
DESCRIPTION "linear algebra library"
3739
URL "http://eigen.tuxfamily.org/"
38-
TYPE REQUIRED
40+
TYPE OPTIONAL
3941
PURPOSE "matrix and vector types and arithmetics"
4042
)
4143

4244
if(NOT EIGEN3_FOUND)
4345
set(EIGEN3_SOURCE_URL "http://bitbucket.org/eigen/eigen/get/3.2.2.tar.bz2")
46+
set(EIGEN3_SOURCE_MD5 "fc2e814ae449d16b331f7e1f4e272bd3")
47+
4448
message(STATUS "Eigen3 not found on your system")
45-
message(STATUS " going to download sources")
46-
message(STATUS " download URL: ${EIGEN3_SOURCE_URL}")
49+
message(STATUS " going to download sources from:")
50+
message(STATUS " ${EIGEN3_SOURCE_URL}")
4751
set(Eigen3_SOURCE_DIR "${pfasst_BINARY_DIR}/3rdparty/src/Eigen3")
4852

4953
ExternalProject_Add(
5054
Eigen3
5155
LIST_SEPARATOR " "
5256
URL ${EIGEN3_SOURCE_URL}
53-
URL_MD5 fc2e814ae449d16b331f7e1f4e272bd3
54-
TIMEOUT 30
57+
URL_MD5 ${EIGEN3_SOURCE_MD5}
58+
TIMEOUT ${3rdparty_DOWNLOAD_TIMEOUT}
5559
UPDATE_COMMAND ""
5660
PATCH_COMMAND ""
5761
BUILD_IN_SOURCE ON
@@ -66,52 +70,46 @@ if(NOT EIGEN3_FOUND)
6670
)
6771

6872
# Specify include dir
69-
set(Eigen3_INCLUDE_PATH "${Eigen3_SOURCE_DIR}" CACHE PATH "" FORCE)
70-
71-
mark_as_advanced(Eigen3_INCLUDE_PATH)
73+
set(Eigen3_INCLUDE_PATH "${Eigen3_SOURCE_DIR}")
7274
set(Eigen3_FOUND TRUE)
73-
set_property(GLOBAL APPEND PROPERTY PACKAGES_FOUND "Eigen3")
74-
get_property(packages_not_found GLOBAL PROPERTY PACKAGES_NOT_FOUND)
75-
list(REMOVE_ITEM packages_not_found "Eigen3")
76-
set_property(GLOBAL PROPERTY PACKAGES_NOT_FOUND ${packages_not_found})
77-
unset(packages_not_found)
7875

7976
list(APPEND pfasst_DEPENDEND_TARGETS Eigen3)
77+
78+
msg_not_installed("Eigen3")
8079
endif()
8180

8281
list(APPEND 3rdparty_INCLUDES "${Eigen3_INCLUDE_PATH}")
8382

8483

8584
message(STATUS "--------------------------------------------------------------------------------")
86-
message(STATUS "Easyloggingpp")
85+
message(STATUS "Easylogging++")
8786

88-
set(EASYLOGGINGPP_SOURCE_URL
87+
set(EASYLOGGING++_SOURCE_URL
8988
"https://github.com/easylogging/easyloggingpp/releases/download/v9.75/easyloggingpp_v9.75.tar.gz"
9089
)
9190

92-
find_package(Easyloggingpp)
93-
set_package_properties(Easyloggingpp
91+
find_package(Easylogging++)
92+
set_package_properties(Easylogging++
9493
PROPERTIES
95-
DESCRIPTION "Easylogging++ logging library"
94+
DESCRIPTION "logging library"
9695
URL "https://github.com/easylogging/easyloggingpp"
97-
TYPE REQUIRED
96+
TYPE OPTIONAL
9897
PURPOSE "provides functionality for versatile logging"
9998
)
10099

101-
if(NOT Easyloggingpp_FOUND)
102-
unset(Easyloggingpp_INCLUDE_PATH)
103-
unset(Easyloggingpp_INCLUDE_PATH CACHE)
104-
unset(Easyloggingpp_FOUND)
105-
message(STATUS "Easyloggingpp not found on your system")
106-
message(STATUS " going to download sources")
107-
message(STATUS " download URL: ${EASYLOGGINGPP_SOURCE_URL}")
108-
set(Easyloggingpp_SOURCE_DIR "${pfasst_BINARY_DIR}/3rdparty/src/Easyloggingpp")
100+
if(NOT EASYLOGGING++_FOUND)
101+
set(Easylogging++_SOURCE_DIR "${pfasst_BINARY_DIR}/3rdparty/src/Easylogging++")
102+
set(EASYLOGGING++_SOURCE_MD5 "3e37462b30cb6ee49faeed6a94d1bc1e")
103+
104+
message(STATUS "Easylogging++ not found on your system")
105+
message(STATUS " going to download sources from:")
106+
message(STATUS " ${EASYLOGGING++_SOURCE_URL}")
109107
ExternalProject_Add(
110-
Easyloggingpp
108+
Easylogging++
111109
LIST_SEPARATOR " "
112-
URL ${EASYLOGGINGPP_SOURCE_URL}
113-
URL_MD5 3e37462b30cb6ee49faeed6a94d1bc1e
114-
TIMEOUT 30
110+
URL ${EASYLOGGING++_SOURCE_URL}
111+
URL_MD5 ${Easylogging++_SOURCE_MD5}
112+
TIMEOUT ${3rdparty_DOWNLOAD_TIMEOUT}
115113
UPDATE_COMMAND ""
116114
PATCH_COMMAND ""
117115
CONFIGURE_COMMAND ""
@@ -124,20 +122,16 @@ if(NOT Easyloggingpp_FOUND)
124122
LOG_BUILD OFF
125123
)
126124

127-
# Specify include dir and hack on CMake internals to overwrite internal not-found flag
128-
set(Easyloggingpp_INCLUDE_PATH "${Easyloggingpp_SOURCE_DIR}" CACHE PATH "" FORCE)
129-
mark_as_advanced(Easyloggingpp_INCLUDE_PATH)
130-
set(Easyloggingpp_FOUND TRUE)
131-
set_property(GLOBAL APPEND PROPERTY PACKAGES_FOUND "Easyloggingpp")
132-
get_property(packages_not_found GLOBAL PROPERTY PACKAGES_NOT_FOUND)
133-
list(REMOVE_ITEM packages_not_found "Easyloggingpp")
134-
set_property(GLOBAL PROPERTY PACKAGES_NOT_FOUND ${packages_not_found})
135-
unset(packages_not_found)
136-
137-
list(APPEND pfasst_DEPENDEND_TARGETS Easyloggingpp)
125+
# Specify include dir
126+
set(Easylogging++_INCLUDE_PATH "${Easylogging++_SOURCE_DIR}")
127+
set(EASYLOGGING++_FOUND TRUE)
128+
129+
list(APPEND pfasst_DEPENDEND_TARGETS Easylogging++)
130+
131+
msg_not_installed("Easylogging++")
138132
endif()
139133

140-
list(APPEND 3rdparty_INCLUDES "${Easyloggingpp_INCLUDE_PATH}")
134+
list(APPEND 3rdparty_INCLUDES "${Easylogging++_INCLUDE_PATH}")
141135

142136

143137
if(pfasst_BUILD_EXAMPLES)
@@ -149,24 +143,26 @@ if(pfasst_BUILD_EXAMPLES)
149143
PROPERTIES
150144
DESCRIPTION "FFTW3"
151145
URL "http://fftw.org/"
152-
TYPE REQUIRED
146+
TYPE OPTIONAL
153147
PURPOSE "fast Fourier transformation"
154148
)
155149

156150
if(NOT FFTW_FOUND)
157151
set(FFTW3_SOURCE_URL "http://fftw.org/fftw-3.3.4.tar.gz")
152+
set(FFTW3_SOURCE_MD5 "2edab8c06b24feeb3b82bbb3ebf3e7b3")
153+
158154
message(STATUS "FFTW3 not found on your system")
159-
message(STATUS " going to download and compile it from sources")
160-
message(STATUS " download URL: ${FFTW3_SOURCE_URL}")
155+
message(STATUS " going to download and compile it from sources retrieved from:")
156+
message(STATUS " ${FFTW3_SOURCE_URL}")
161157
set(fftw3_SOURCE_DIR "${pfasst_BINARY_DIR}/3rdparty/src/fftw3")
162158
set(fftw3_INSTALL_DIR "${pfasst_BINARY_DIR}/3rdparty/src/fftw3-install")
163159

164160
ExternalProject_Add(
165161
fftw3
166162
LIST_SEPARATOR " "
167163
URL ${FFTW3_SOURCE_URL}
168-
URL_MD5 2edab8c06b24feeb3b82bbb3ebf3e7b3
169-
TIMEOUT 30
164+
URL_MD5 ${FFTW3_SOURCE_MD5}
165+
TIMEOUT ${3rdparty_DOWNLOAD_TIMEOUT}
170166
UPDATE_COMMAND ""
171167
PATCH_COMMAND ""
172168
BUILD_IN_SOURCE ON
@@ -180,19 +176,14 @@ if(pfasst_BUILD_EXAMPLES)
180176
LOG_BUILD ON
181177
)
182178
# Specify include dir
183-
set(FFTW_INCLUDE_PATH ${fftw3_INSTALL_DIR}/include CACHE PATH "" FORCE PARENT_SCOPE)
184-
set(FFTW_LIBRARIES ${fftw3_INSTALL_DIR}/lib/libfftw3.a CACHE FILEPATH "" FORCE PARENT_SCOPE)
179+
set(FFTW_INCLUDE_PATH ${fftw3_INSTALL_DIR}/include)
180+
set(FFTW_LIBRARIES ${fftw3_INSTALL_DIR}/lib/libfftw3.a)
185181

186-
mark_as_advanced(FFTW_INCLUDE_PATH FFTW_LIBRARIES)
187182
set(FFTW_FOUND TRUE)
188-
set_property(GLOBAL APPEND PROPERTY PACKAGES_FOUND "FFTW")
189-
get_property(packages_not_found GLOBAL PROPERTY PACKAGES_NOT_FOUND)
190-
list(REMOVE_ITEM packages_not_found "FFTW")
191-
set_property(GLOBAL PROPERTY PACKAGES_NOT_FOUND ${packages_not_found})
192-
unset(packages_not_found)
193183

194184
list(APPEND pfasst_DEPENDEND_LIBS FFTW)
195185

186+
msg_not_installed("FFTW3")
196187
else()
197188
set(FFTW_INCLUDE_PATH ${FFTW_INCLUDE_PATH} PARENT_SCOPE)
198189
set(FFTW_LIBRARIES ${FFTW_LIBRARIES} PARENT_SCOPE)
@@ -206,16 +197,18 @@ if(pfasst_BUILD_TESTS)
206197

207198
message(STATUS "--------------------------------------------------------------------------------")
208199
set(GMOCK_SOURCE_URL "http://googlemock.googlecode.com/files/gmock-1.7.0.zip")
200+
set(GMOCK_SOURCE_MD5 "073b984d8798ea1594f5e44d85b20d66")
201+
209202
message(STATUS "Google Testing Framework (gtest & gmock)")
210-
message(STATUS " going to download and compile it from sources")
211-
message(STATUS " download URL: ${GMOCK_SOURCE_URL}")
203+
message(STATUS " going to download and compile it from sources retrieved from:")
204+
message(STATUS " ${GMOCK_SOURCE_URL}")
212205

213206
# Add gmock
214207
ExternalProject_Add(
215208
googlemock
216209
URL ${GMOCK_SOURCE_URL}
217-
URL_MD5 073b984d8798ea1594f5e44d85b20d66
218-
TIMEOUT 30
210+
URL_MD5 ${GMOCK_SOURCE_MD5}
211+
TIMEOUT ${3rdparty_DOWNLOAD_TIMEOUT}
219212
UPDATE_COMMAND ""
220213
PATCH_COMMAND ""
221214
CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release

CMakeLists.txt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,4 @@ if(${CMAKE_VERBOSE_MAKEFILE})
177177
message(STATUS "********************************************************************************")
178178
endif()
179179

180-
feature_summary(WHAT ENABLED_FEATURES DESCRIPTION "Enabled Features:")
181-
feature_summary(WHAT DISABLED_FEATURES DESCRIPTION "Disabled Features:")
182-
feature_summary(WHAT PACKAGES_FOUND DESCRIPTION "Packages Found (or auto-added):")
183-
feature_summary(WHAT PACKAGES_NOT_FOUND DESCRIPTION "Packages Not Found:")
180+
feature_summary(WHAT ALL)

cmake/FindEasylogging++.cmake

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# - Find Easylogging++
2+
# Find the native Easylogging++ includes
3+
#
4+
# Easylogging++_INCLUDE_PATH - where to find the single header file
5+
# EASYLOGGING++_FOUND - True if Easyloggingpp found.
6+
7+
if(Easylogging++_INCLUDE_PATH)
8+
# Already in cache, be silent
9+
set(Easylogging++_FIND_QUIETLY TRUE)
10+
endif(Easylogging++_INCLUDE_PATH)
11+
12+
find_path(Easylogging++_INCLUDE_PATH
13+
easylogging++.h
14+
PATH_SUFFIXES easylogging++
15+
)
16+
17+
# handle the QUIETLY and REQUIRED arguments and set EASYLOGGING++_FOUND to TRUE if
18+
# all listed variables are TRUE
19+
include(FindPackageHandleStandardArgs)
20+
find_package_handle_standard_args(Easylogging++
21+
DEFAULT_MSG
22+
Easylogging++_INCLUDE_PATH
23+
)
24+
25+
mark_as_advanced(Easylogging++_INCLUDE_PATH)

cmake/FindEasyloggingpp.cmake

Lines changed: 0 additions & 25 deletions
This file was deleted.

cmake/utility_functions.cmake

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,11 @@ function(add_to_string_list in_string out_string)
1919
# message(STATUS "Full string is now: '${in_string}'")
2020
set(${out_string} ${in_string} PARENT_SCOPE)
2121
endfunction(add_to_string_list)
22+
23+
macro(msg_not_installed dependency_name)
24+
message("!!!!")
25+
message("! ${dependency_name} will not be installed with PFASST++.")
26+
message("! When using PFASST++ with your own code, please make sure to also add")
27+
message("! ${dependency_name} manually to your project.")
28+
message("!!!!")
29+
endmacro(msg_not_installed)

0 commit comments

Comments
 (0)