@@ -16,6 +16,8 @@ set(VERSION_PATCH 0)
1616
1717set (VERSION_ABI 1)
1818
19+ option (BUILD_STATIC "Build static version of the library" OFF )
20+
1921if (NOT WIN32 )
2022 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_INIT} -std=c++11" ) ## Optimize
2123 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Wunreachable-code" )
@@ -44,24 +46,20 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
4446
4547#########################################
4648# HDF-5
47- if (WIN32 )
48- set (HDF5_USE_STATIC_LIBS OFF )
49- find_package (HDF5 NO_MODULE)
50- else ()
51- set (HDF5_USE_STATIC_LIBS OFF )
52- find_package (HDF5 REQUIRED COMPONENTS C)
53- endif ()
49+ set (HDF5_USE_STATIC_LIBRARIES ${BUILD_STATIC} )
50+ find_package (HDF5 REQUIRED COMPONENTS C)
5451include_directories (${HDF5_INCLUDE_DIRS} )
5552set (LINK_LIBS ${LINK_LIBS} ${HDF5_LIBRARIES} )
5653
5754
5855########################################
5956# Boost
6057if (WIN32 )
58+ # On windows we always use the static version of boost
6159 set (Boost_USE_STATIC_LIBS ON )
6260 set (Boost_USE_STATIC_RUNTIME OFF )
6361else ()
64- set (Boost_USE_STATIC_LIBS OFF )
62+ set (Boost_USE_STATIC_LIBS ${BUILD_STATIC} )
6563endif ()
6664
6765set (Boost_USE_MULTITHREADED ON )
@@ -127,8 +125,17 @@ endforeach()
127125
128126### LIBRARY
129127
130- add_library (nix SHARED ${nix_INCLUDES} ${nix_SOURCES} )
128+ if (BUILD_STATIC)
129+ set (NIX_LIBTYPE STATIC )
130+ add_definitions (-DNIX_STATIC=1)
131+ else ()
132+ set (NIX_LIBTYPE SHARED)
133+ endif ()
134+
135+ add_library (nix ${NIX_LIBTYPE} ${nix_INCLUDES} ${nix_SOURCES} )
131136target_link_libraries (nix ${LINK_LIBS} )
137+ set_target_properties (nix PROPERTIES POSITION_INDEPENDENT_CODE TRUE )
138+ set_target_properties (nix PROPERTIES COMPILE_FLAGS "-fPIC" )
132139set_target_properties (nix PROPERTIES
133140 VERSION ${VERSION_MAJOR} .${VERSION_MINOR} .${VERSION_PATCH}
134141 SOVERSION ${VERSION_ABI} )
@@ -233,6 +240,7 @@ endif()
233240
234241install (TARGETS nix nix-tool
235242 LIBRARY DESTINATION ${LIB_INSTALL_DIR}
243+ ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
236244 FRAMEWORK DESTINATION "/Library/Frameworks"
237245 RUNTIME DESTINATION bin)
238246install (DIRECTORY include / DESTINATION ${INCLUDE_INSTALL_DIR} )
@@ -256,10 +264,13 @@ if(WIN32)
256264 DESTINATION ./
257265 COMPONENT libraries)
258266
267+ if (NOT BUILD_STATIC)
259268 file (GLOB HDF5_DLLS "${HDF5_DIR} /../../bin/*.dll" )
260269 install (FILES ${HDF5_DLLS}
261270 DESTINATION bin
262271 COMPONENT libraries)
272+ endif ()
273+
263274 file (GLOB HDF5_COPYING "${HDF5_DIR} /../../COPYING" )
264275 install (FILES ${HDF5_COPYING}
265276 DESTINATION ./
@@ -290,6 +301,8 @@ get_directory_property(incdirs INCLUDE_DIRECTORIES)
290301
291302MESSAGE (STATUS "READY. " )
292303MESSAGE (STATUS "===============================" )
304+ MESSAGE (STATUS "STATIC: ${BUILD_STATIC} " )
305+ MESSAGE (STATUS "===============================" )
293306MESSAGE (STATUS "INCDIRS: ${incdirs} " )
294307MESSAGE (STATUS "CFLAGS: ${CMAKE_CXX_FLAGS} " )
295308MESSAGE (STATUS "BOOST: ${Boost_LIBRARIES} " )
0 commit comments