|
1 | 1 | # |
2 | | - # Copyright 2013 Felix Schmitt |
| 2 | + # Copyright 2013 Felix Schmitt, Axel Huebl |
3 | 3 | # |
4 | 4 | # This file is part of libSplash. |
5 | 5 | # |
@@ -35,24 +35,56 @@ PROJECT(libSplash) |
35 | 35 | #set helper pathes to find libraries and packages |
36 | 36 | #- you need the multiarch dir x86_64-linux-gnu on 64bit Ubuntu's with |
37 | 37 | # self-compiled compilers |
38 | | -SET(CMAKE_PREFIX_PATH "/usr/lib/x86_64-linux-gnu/" "$ENV{MPI_ROOT}" "$ENV{HDF5_ROOT}") |
| 38 | +SET(CMAKE_PREFIX_PATH "/usr/lib/x86_64-linux-gnu/" "$ENV{MPI_ROOT}" |
| 39 | + "$ENV{HDF5_ROOT}") |
39 | 40 |
|
40 | 41 | #------------------------------------------------------------------------------- |
41 | 42 |
|
42 | 43 | # install prefix |
43 | 44 | IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) |
44 | | - SET(CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}" CACHE PATH "install prefix" FORCE) |
| 45 | + SET(CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}" CACHE PATH "install prefix" |
| 46 | + FORCE) |
45 | 47 | ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) |
46 | 48 |
|
47 | 49 | #------------------------------------------------------------------------------- |
48 | 50 |
|
| 51 | +# whats my version? |
| 52 | +FILE(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/src/include/splash/version.hpp" |
| 53 | + SPLASH_VERSION_MAJOR_HPP REGEX "#define SPLASH_VERSION_MAJOR ") |
| 54 | +FILE(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/src/include/splash/version.hpp" |
| 55 | + SPLASH_VERSION_MINOR_HPP REGEX "#define SPLASH_VERSION_MINOR ") |
| 56 | +FILE(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/src/include/splash/version.hpp" |
| 57 | + SPLASH_VERSION_PATCH_HPP REGEX "#define SPLASH_VERSION_PATCH ") |
| 58 | + |
| 59 | +STRING(REGEX MATCH "([0-9]+)" SPLASH_VERSION_MAJOR |
| 60 | + ${SPLASH_VERSION_MAJOR_HPP}) |
| 61 | +STRING(REGEX MATCH "([0-9]+)" SPLASH_VERSION_MINOR |
| 62 | + ${SPLASH_VERSION_MINOR_HPP}) |
| 63 | +STRING(REGEX MATCH "([0-9]+)" SPLASH_VERSION_PATCH |
| 64 | + ${SPLASH_VERSION_PATCH_HPP}) |
| 65 | + |
| 66 | +SET(SPLASH_VERSION "${SPLASH_VERSION_MAJOR}.${SPLASH_VERSION_MINOR}.${SPLASH_VERSION_PATCH}") |
| 67 | +MESSAGE(STATUS "Building libSplash version ${SPLASH_VERSION}") |
| 68 | + |
| 69 | +#------------------------------------------------------------------------------- |
| 70 | + |
49 | 71 | # HDF5 is required package |
50 | 72 | FIND_PACKAGE(HDF5 REQUIRED) |
51 | 73 | INCLUDE_DIRECTORIES(SYSTEM ${HDF5_INCLUDE_DIR}) |
52 | 74 |
|
| 75 | +# check if static version of HDF5 is used |
| 76 | +# CMake prefers .so/shared libraries |
| 77 | +# if we find a static HDF5 lib in the ${HDF5_LIBRARIES} |
| 78 | +# it means there is only a static version installed |
| 79 | +SET(HDF5_IS_STATIC ON) |
| 80 | +STRING(FIND "${HDF5_LIBRARIES}" "hdf5.a" HDF5_IS_STATIC_POS) |
| 81 | +IF(${HDF5_IS_STATIC_POS} EQUAL -1) |
| 82 | + SET(HDF5_IS_STATIC OFF) |
| 83 | +ENDIF(${HDF5_IS_STATIC_POS} EQUAL -1) |
| 84 | + |
53 | 85 | #------------------------------------------------------------------------------- |
54 | 86 |
|
55 | | -SET(CMAKE_CXX_FLAGS "-Wall -Werror -Wextra -Woverloaded-virtual") |
| 87 | +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -Wextra -Woverloaded-virtual") |
56 | 88 |
|
57 | 89 | # options |
58 | 90 | OPTION(DEBUG_VERBOSE "Enable verbose HDF5 debug output" OFF) |
@@ -110,50 +142,62 @@ AUX_SOURCE_DIRECTORY("${CMAKE_CURRENT_SOURCE_DIR}/tools" TOOLS_SOURCES) |
110 | 142 |
|
111 | 143 | #------------------------------------------------------------------------------- |
112 | 144 |
|
113 | | -# build libsplash shared |
114 | | -ADD_LIBRARY(splash SHARED ${LIBRARY_SOURCES}) |
115 | | -TARGET_LINK_LIBRARIES (splash ${SPLASH_LIBS}) |
| 145 | +# build libsplash shared (if shared HDF5 is used) |
| 146 | +IF(HDF5_IS_STATIC) |
| 147 | + MESSAGE(WARNING "Skipping dynamic libSplash because HDF5 library is static") |
| 148 | +ELSE(HDF5_IS_STATIC) |
| 149 | + ADD_LIBRARY(splash SHARED ${LIBRARY_SOURCES}) |
| 150 | + TARGET_LINK_LIBRARIES(splash ${SPLASH_LIBS}) |
| 151 | +ENDIF(HDF5_IS_STATIC) |
116 | 152 |
|
117 | | -#build libsplash static |
| 153 | +# build libsplash static |
118 | 154 | ADD_LIBRARY(splash_static STATIC ${LIBRARY_SOURCES}) |
119 | 155 | SET_TARGET_PROPERTIES(splash_static PROPERTIES OUTPUT_NAME splash) |
120 | 156 | TARGET_LINK_LIBRARIES (splash_static ${SPLASH_LIBS}) |
121 | 157 |
|
122 | 158 | # install libs |
123 | | -INSTALL(TARGETS splash LIBRARY DESTINATION lib) |
| 159 | +IF(NOT HDF5_IS_STATIC) |
| 160 | + INSTALL(TARGETS splash LIBRARY DESTINATION lib) |
| 161 | +ENDIF(NOT HDF5_IS_STATIC) |
| 162 | + |
124 | 163 | INSTALL(TARGETS splash_static ARCHIVE DESTINATION lib) |
125 | 164 |
|
126 | 165 | # copy include folder to install folder |
127 | 166 | INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src/include/." |
128 | | - DESTINATION "${CMAKE_INSTALL_PREFIX}/include" |
| 167 | + DESTINATION include |
129 | 168 | PATTERN ".svn" EXCLUDE |
130 | 169 | PATTERN ".git" EXCLUDE |
131 | 170 | PATTERN "splash_*.h" EXCLUDE |
132 | 171 | ) |
133 | 172 |
|
134 | 173 | # install correct splash header file |
135 | | -INSTALL(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/PostInstall.cmake") |
| 174 | +# (will be executed after the POST_BUILD copies of splash.h) |
| 175 | +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/splash/splash.h |
| 176 | + DESTINATION include/splash) |
| 177 | + |
| 178 | +ADD_CUSTOM_COMMAND(TARGET splash_static POST_BUILD |
| 179 | + COMMAND ${CMAKE_COMMAND} -E make_directory |
| 180 | + "${CMAKE_CURRENT_BINARY_DIR}/splash" |
| 181 | +) |
| 182 | + |
136 | 183 | IF(HDF5_IS_PARALLEL) |
137 | | - SET(splash_inc_file "${CMAKE_CURRENT_SOURCE_DIR}/src/include/splash_parallel.h") |
| 184 | + SET(splash_inc_file "${CMAKE_CURRENT_SOURCE_DIR}/src/include/splash/splash_parallel.h") |
138 | 185 |
|
139 | | - ADD_CUSTOM_COMMAND(TARGET splash POST_BUILD |
140 | | - COMMAND ${CMAKE_COMMAND} -E create_symlink |
141 | | - "${CMAKE_CURRENT_SOURCE_DIR}/src/include/splash_parallel.h" |
142 | | - "${CMAKE_CURRENT_BINARY_DIR}/splash.h" |
| 186 | + ADD_CUSTOM_COMMAND(TARGET splash_static POST_BUILD |
| 187 | + COMMAND ${CMAKE_COMMAND} -E copy |
| 188 | + "${CMAKE_CURRENT_SOURCE_DIR}/src/include/splash/splash_parallel.h" |
| 189 | + "${CMAKE_CURRENT_BINARY_DIR}/splash/splash.h" |
143 | 190 | ) |
144 | 191 | ELSE(HDF5_IS_PARALLEL) |
145 | | - SET(splash_inc_file "${CMAKE_CURRENT_SOURCE_DIR}/src/include/splash_serial.h") |
| 192 | + SET(splash_inc_file "${CMAKE_CURRENT_SOURCE_DIR}/src/include/splash/splash_serial.h") |
146 | 193 |
|
147 | | - ADD_CUSTOM_COMMAND(TARGET splash POST_BUILD |
148 | | - COMMAND ${CMAKE_COMMAND} -E create_symlink |
149 | | - "${CMAKE_CURRENT_SOURCE_DIR}/src/include/splash_serial.h" |
150 | | - "${CMAKE_CURRENT_BINARY_DIR}/splash.h" |
| 194 | + ADD_CUSTOM_COMMAND(TARGET splash_static POST_BUILD |
| 195 | + COMMAND ${CMAKE_COMMAND} -E copy |
| 196 | + "${CMAKE_CURRENT_SOURCE_DIR}/src/include/splash/splash_serial.h" |
| 197 | + "${CMAKE_CURRENT_BINARY_DIR}/splash/splash.h" |
151 | 198 | ) |
152 | 199 | ENDIF(HDF5_IS_PARALLEL) |
153 | 200 |
|
154 | | -CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/PostInstall.cmake.in |
155 | | - ${CMAKE_CURRENT_BINARY_DIR}/PostInstall.cmake @ONLY) |
156 | | - |
157 | 201 | #------------------------------------------------------------------------------- |
158 | 202 |
|
159 | 203 | # build tools |
@@ -190,7 +234,7 @@ IF(WITH_TOOLS) |
190 | 234 | ENDIF(HDF5_IS_PARALLEL) |
191 | 235 |
|
192 | 236 | ADD_EXECUTABLE(splashtools ${TOOLS_SOURCES}) |
193 | | - ADD_DEPENDENCIES(splashtools splash splash_static) |
| 237 | + ADD_DEPENDENCIES(splashtools splash_static) |
194 | 238 | TARGET_LINK_LIBRARIES(splashtools ${TOOLS_LIBS}) |
195 | 239 |
|
196 | 240 | #install tools |
|
0 commit comments