11 #
2- # Copyright 2013-2014 Felix Schmitt, Axel Huebl
2+ # Copyright 2013-2015 Felix Schmitt, Axel Huebl
33 #
44 # This file is part of libSplash.
55 #
@@ -39,6 +39,9 @@ PROJECT(libSplash)
3939SET (CMAKE_PREFIX_PATH "/usr/lib/x86_64-linux-gnu/" "$ENV{MPI_ROOT} "
4040 "$ENV{HDF5_ROOT} " )
4141
42+ # own modules for find_packages
43+ set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR} /cmake/ ${CMAKE_MODULE_PATH} )
44+
4245#-------------------------------------------------------------------------------
4346
4447# install prefix
@@ -70,18 +73,17 @@ MESSAGE(STATUS "Building libSplash version ${SPLASH_VERSION}")
7073#-------------------------------------------------------------------------------
7174
7275# HDF5 is required package
73- FIND_PACKAGE (HDF5 REQUIRED)
76+ FIND_PACKAGE (HDF5 1.8.6 REQUIRED)
7477INCLUDE_DIRECTORIES (SYSTEM ${HDF5_INCLUDE_DIR} )
7578
76- # check if static version of HDF5 is used
77- # CMake prefers .so/shared libraries
78- # if we find a static HDF5 lib in the ${HDF5_LIBRARIES}
79- # it means there is only a static version installed
80- SET (HDF5_IS_STATIC ON )
81- STRING (FIND "${HDF5_LIBRARIES} " "hdf5.a" HDF5_IS_STATIC_POS)
82- IF (${HDF5_IS_STATIC_POS} EQUAL -1)
83- SET (HDF5_IS_STATIC OFF )
84- ENDIF (${HDF5_IS_STATIC_POS} EQUAL -1)
79+ # check if shared version of HDF5 can be used
80+ # CMake prefers .so/shared libraries over static ones
81+ SET (HDF5_HAS_SHARED ON )
82+ STRING (FIND "${HDF5_LIBRARIES} " "hdf5.so" HDF5_HAS_SHARED_POS)
83+ IF (${HDF5_HAS_SHARED_POS} EQUAL -1)
84+ SET (HDF5_HAS_SHARED OFF )
85+ ENDIF ()
86+ UNSET (HDF5_HAS_SHARED_POS)
8587
8688#-------------------------------------------------------------------------------
8789
@@ -109,7 +111,7 @@ ENDIF(NOT SPLASH_RELEASE)
109111SET (SPLASH_LIBS z ${HDF5_LIBRARIES} )
110112
111113# serial or parallel version of libSplash
112- SET (SPLASH_CLASSES logging DCAttribute DCDataSet DCGroup HandleMgr SerialDataCollector DomainCollector)
114+ SET (SPLASH_CLASSES logging DCAttribute DCDataSet DCGroup HandleMgr SerialDataCollector DomainCollector SDCHelper )
113115IF (HDF5_IS_PARALLEL)
114116 #parallel version
115117 MESSAGE (STATUS "Parallel HDF5 found. Building parallel version" )
@@ -144,22 +146,22 @@ AUX_SOURCE_DIRECTORY("${CMAKE_CURRENT_SOURCE_DIR}/tools" TOOLS_SOURCES)
144146#-------------------------------------------------------------------------------
145147
146148# build libsplash shared (if shared HDF5 is used)
147- IF (HDF5_IS_STATIC )
149+ IF (NOT HDF5_HAS_SHARED )
148150 MESSAGE (WARNING "Skipping dynamic libSplash because HDF5 library is static" )
149- ELSE (HDF5_IS_STATIC )
151+ ELSE ()
150152 ADD_LIBRARY (splash SHARED ${LIBRARY_SOURCES} )
151153 TARGET_LINK_LIBRARIES (splash ${SPLASH_LIBS} )
152- ENDIF (HDF5_IS_STATIC )
154+ ENDIF ()
153155
154156# build libsplash static
155157ADD_LIBRARY (splash_static STATIC ${LIBRARY_SOURCES} )
156158SET_TARGET_PROPERTIES (splash_static PROPERTIES OUTPUT_NAME splash)
157159TARGET_LINK_LIBRARIES (splash_static ${SPLASH_LIBS} )
158160
159161# install libs
160- IF (NOT HDF5_IS_STATIC )
162+ IF (HDF5_HAS_SHARED )
161163 INSTALL (TARGETS splash LIBRARY DESTINATION lib)
162- ENDIF (NOT HDF5_IS_STATIC )
164+ ENDIF ()
163165
164166INSTALL (TARGETS splash_static ARCHIVE DESTINATION lib)
165167
@@ -169,8 +171,15 @@ INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src/include/."
169171 PATTERN ".svn" EXCLUDE
170172 PATTERN ".git" EXCLUDE
171173 PATTERN "splash_*.h" EXCLUDE
174+ PATTERN "version.hpp" EXCLUDE
172175)
173176
177+ # version.hpp file with SPLASH_HDF5_VERSION set accordingly
178+ configure_file ( ${CMAKE_CURRENT_SOURCE_DIR} /src/include /splash/version .hpp
179+ ${CMAKE_CURRENT_BINARY_DIR} /splash/version .hpp )
180+ INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR} /splash/version .hpp
181+ DESTINATION include /splash)
182+
174183# install correct splash header file
175184# (will be executed after the POST_BUILD copies of splash.h)
176185INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR} /splash/splash.h
@@ -210,7 +219,11 @@ OPTION(WITH_TOOLS "enable splashtools" ON)
210219IF (WITH_TOOLS)
211220 MESSAGE (STATUS "Building splashtools" )
212221
213- SET (TOOLS_LIBS ${TOOLS_LIBS} splash_static)
222+ IF (HDF5_HAS_SHARED)
223+ SET (TOOLS_LIBS ${TOOLS_LIBS} splash)
224+ ELSE ()
225+ SET (TOOLS_LIBS ${TOOLS_LIBS} splash_static)
226+ ENDIF ()
214227 INCLUDE_DIRECTORIES (${CMAKE_CURRENT_BINARY_DIR} )
215228
216229 # MPI for tools
0 commit comments