Only build static OR shared libs

- Use canonical -DBUILD_SHARED_LIBS=TRUE (CMake)
pull/5/head
Izaak Beekman 9 years ago
parent c171e9addb
commit 5a582ac16f

@ -448,8 +448,7 @@ if (SERIAL_MPI)
set(base_source_files ${base_source_files} modules/fakempi.c) set(base_source_files ${base_source_files} modules/fakempi.c)
endif() endif()
add_library(base SHARED ${base_source_files}) add_library(base ${base_source_files})
add_library(base_static STATIC ${base_source_files})
set_target_properties(base set_target_properties(base
PROPERTIES PROPERTIES
@ -458,29 +457,13 @@ set_target_properties(base
SOVERSION ${PSBLAS_SO_VERSION} SOVERSION ${PSBLAS_SO_VERSION}
OUTPUT_NAME psb_base OUTPUT_NAME psb_base
) )
set_target_properties(base_static
PROPERTIES
Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/${mod_dir_tail}"
POSITION_INDEPENDENT_CODE TRUE
SOVERSION ${PSBLAS_SO_VERSION}
OUTPUT_NAME psb_base
)
target_link_libraries(base PRIVATE ${MPI_C_LIBRARIES} ${MPI_Fortran_LIBRARIES}) target_link_libraries(base PRIVATE ${MPI_C_LIBRARIES} ${MPI_Fortran_LIBRARIES})
target_link_libraries(base_static PRIVATE ${MPI_C_LIBRARIES} ${MPI_Fortran_LIBRARIES})
install(DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" install(DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
FILES_MATCHING PATTERN "*.mod") FILES_MATCHING PATTERN "*.mod")
get_target_property(libbase_static base_static OUTPUT_NAME)
set(PSBLAS_LIBS "${CMAKE_INSTALL_LIBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${libbase_static}${CMAKE_STATIC_LIBRARY_SUFFIX}")
install(TARGETS base install(TARGETS base
EXPORT PSBLAS_Targets EXPORT PSBLAS_Targets
DESTINATION "${CMAKE_INSTALL_LIBDIR}" DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
) )
install(TARGETS base_static
EXPORT PSBLAS_Targets
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
)

@ -131,11 +131,9 @@ psb_zkrylov.f90
psb_zrgmres.f90 psb_zrgmres.f90
) )
add_library(krylov SHARED ${krylov_source_files}) add_library(krylov ${krylov_source_files})
add_library(krylov_static STATIC ${krylov_source_files})
target_link_libraries(krylov PRIVATE ${MPI_C_LIBRARIES} ${MPI_Fortran_LIBRARIES} prec) target_link_libraries(krylov PRIVATE ${MPI_C_LIBRARIES} ${MPI_Fortran_LIBRARIES} prec)
target_link_libraries(krylov_static PRIVATE ${MPI_C_LIBRARIES} ${MPI_Fortran_LIBRARIES} prec_static)
install(DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" install(DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
FILES_MATCHING PATTERN "*.mod") FILES_MATCHING PATTERN "*.mod")
@ -147,22 +145,8 @@ set_target_properties ( krylov
POSITION_INDEPENDENT_CODE TRUE POSITION_INDEPENDENT_CODE TRUE
OUTPUT_NAME psb_krylov OUTPUT_NAME psb_krylov
) )
set_target_properties( krylov_static
PROPERTIES
SOVERSION ${PSBLAS_SO_VERSION}
Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/${mod_dir_tail}"
POSITION_INDEPENDENT_CODE TRUE
OUTPUT_NAME psb_krylov
)
get_target_property(libkrylov_static krylov_static OUTPUT_NAME)
set(PSBLAS_LIBS "${CMAKE_INSTALL_LIBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${libkrylov_static}${CMAKE_STATIC_LIBRARY_SUFFIX}")
install(TARGETS krylov EXPORT PSBLAS_Targets install(TARGETS krylov EXPORT PSBLAS_Targets
DESTINATION "${CMAKE_INSTALL_LIBDIR}" DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
) )
install(TARGETS krylov_static EXPORT PSBLAS_Targets
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
)

@ -147,11 +147,10 @@ set(prec_source_files
./psb_d_base_prec_mod.f90 ./psb_d_base_prec_mod.f90
) )
add_library(prec SHARED ${prec_source_files}) add_library(prec ${prec_source_files})
add_library(prec_static STATIC ${prec_source_files})
target_link_libraries(prec PRIVATE ${MPI_C_LIBRARIES} ${MPI_Fortran_LIBRARIES} base) target_link_libraries(prec PRIVATE ${MPI_C_LIBRARIES} ${MPI_Fortran_LIBRARIES} base)
target_link_libraries(prec_static PRIVATE ${MPI_C_LIBRARIES} ${MPI_Fortran_LIBRARIES} base_static)
install(DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" install(DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
FILES_MATCHING PATTERN "*.mod") FILES_MATCHING PATTERN "*.mod")
@ -163,22 +162,8 @@ set_target_properties ( prec
POSITION_INDEPENDENT_CODE TRUE POSITION_INDEPENDENT_CODE TRUE
OUTPUT_NAME psb_prec OUTPUT_NAME psb_prec
) )
set_target_properties( prec_static
PROPERTIES
SOVERSION ${PSBLAS_SO_VERSION}
Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/${mod_dir_tail}"
POSITION_INDEPENDENT_CODE TRUE
OUTPUT_NAME psb_prec
)
get_target_property(libprec_static prec_static OUTPUT_NAME)
set(PSBLAS_LIBS "${CMAKE_INSTALL_LIBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${libprec_static}${CMAKE_STATIC_LIBRARY_SUFFIX}")
install(TARGETS prec EXPORT PSBLAS_Targets install(TARGETS prec EXPORT PSBLAS_Targets
DESTINATION "${CMAKE_INSTALL_LIBDIR}" DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
) )
install(TARGETS prec_static EXPORT PSBLAS_Targets
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
)

@ -119,11 +119,9 @@ psb_z_mmio_impl.f90
psb_z_renum_impl.F90 psb_z_renum_impl.F90
) )
add_library(util SHARED ${util_source_files}) add_library(util ${util_source_files})
add_library(util_static STATIC ${util_source_files})
target_link_libraries(util PRIVATE ${MPI_C_LIBRARIES} ${MPI_Fortran_LIBRARIES} base) target_link_libraries(util PRIVATE ${MPI_C_LIBRARIES} ${MPI_Fortran_LIBRARIES} base)
target_link_libraries(util_static PRIVATE ${MPI_C_LIBRARIES} ${MPI_Fortran_LIBRARIES} base_static)
install(DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" install(DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
FILES_MATCHING PATTERN "*.mod") FILES_MATCHING PATTERN "*.mod")
@ -135,22 +133,8 @@ set_target_properties ( util
POSITION_INDEPENDENT_CODE TRUE POSITION_INDEPENDENT_CODE TRUE
OUTPUT_NAME psb_util OUTPUT_NAME psb_util
) )
set_target_properties( util_static
PROPERTIES
SOVERSION ${PSBLAS_SO_VERSION}
Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/${mod_dir_tail}"
POSITION_INDEPENDENT_CODE TRUE
OUTPUT_NAME psb_util
)
get_target_property(libutil_static util_static OUTPUT_NAME)
set(PSBLAS_LIBS "${CMAKE_INSTALL_LIBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${libutil_static}${CMAKE_STATIC_LIBRARY_SUFFIX}")
install(TARGETS util EXPORT PSBLAS_Targets install(TARGETS util EXPORT PSBLAS_Targets
DESTINATION "${CMAKE_INSTALL_LIBDIR}" DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
) )
install(TARGETS util_static EXPORT PSBLAS_Targets
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
)

Loading…
Cancel
Save