Skip to content

Commit

Permalink
Add dependency to system libraries after SuiteSparse libraries
Browse files Browse the repository at this point in the history
Changes to the CMake build rules for KLU, ParU, SPEX, SPQR, and UMFPACK
that are similar to DrTimothyAldenDavis#555.
  • Loading branch information
mmuetzel committed Dec 1, 2023
1 parent c051663 commit dfb32d8
Show file tree
Hide file tree
Showing 5 changed files with 107 additions and 101 deletions.
22 changes: 11 additions & 11 deletions KLU/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -223,17 +223,6 @@ if ( BUILD_STATIC_LIBS )
endif ( )
endif ( )

# libm:
if ( NOT WIN32 )
if ( BUILD_SHARED_LIBS )
target_link_libraries ( KLU PRIVATE m )
endif ( )
if ( BUILD_STATIC_LIBS )
set ( KLU_STATIC_LIBS "${KLU_STATIC_LIBS} -lm" )
target_link_libraries ( KLU_static PUBLIC m )
endif ( )
endif ( )

# AMD:
if ( BUILD_SHARED_LIBS )
target_link_libraries ( KLU PRIVATE SuiteSparse::AMD )
Expand Down Expand Up @@ -308,6 +297,17 @@ if ( NOT NCHOLMOD )

endif ( )

# libm:
if ( NOT WIN32 )
if ( BUILD_SHARED_LIBS )
target_link_libraries ( KLU PRIVATE m )
endif ( )
if ( BUILD_STATIC_LIBS )
set ( KLU_STATIC_LIBS "${KLU_STATIC_LIBS} -lm" )
target_link_libraries ( KLU_static PUBLIC m )
endif ( )
endif ( )

#-------------------------------------------------------------------------------
# KLU installation location
#-------------------------------------------------------------------------------
Expand Down
48 changes: 24 additions & 24 deletions ParU/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,30 @@ if ( BUILD_STATIC_LIBS )
endif ( )
endif ( )

# umfpack:
if ( BUILD_SHARED_LIBS )
target_link_libraries ( ParU PRIVATE SuiteSparse::UMFPACK )
target_include_directories ( ParU PUBLIC
"$<TARGET_PROPERTY:SuiteSparse::UMFPACK,INTERFACE_INCLUDE_DIRECTORIES>" )
endif ( )
if ( BUILD_STATIC_LIBS )
if ( TARGET SuiteSparse::UMFPACK_static )
target_link_libraries ( ParU_static PUBLIC SuiteSparse::UMFPACK_static )
else ( )
target_link_libraries ( ParU_static PUBLIC SuiteSparse::UMFPACK )
endif ( )
endif ( )

# cholmod:
if ( BUILD_SHARED_LIBS )
target_include_directories ( ParU PUBLIC
"$<TARGET_PROPERTY:SuiteSparse::CHOLMOD,INTERFACE_INCLUDE_DIRECTORIES>" )
endif ( )
if ( BUILD_STATIC_LIBS )
target_include_directories ( ParU_static PUBLIC
"$<TARGET_PROPERTY:SuiteSparse::CHOLMOD,INTERFACE_INCLUDE_DIRECTORIES>" )
endif ( )

# OpenMP:
if ( OpenMP_CXX_FOUND )
message ( STATUS "OpenMP C++ libraries: ${OpenMP_CXX_LIBRARIES} ")
Expand All @@ -219,20 +243,6 @@ if ( NOT WIN32 )
endif ( )
endif ( )

# umfpack:
if ( BUILD_SHARED_LIBS )
target_link_libraries ( ParU PRIVATE SuiteSparse::UMFPACK )
target_include_directories ( ParU PUBLIC
"$<TARGET_PROPERTY:SuiteSparse::UMFPACK,INTERFACE_INCLUDE_DIRECTORIES>" )
endif ( )
if ( BUILD_STATIC_LIBS )
if ( TARGET SuiteSparse::UMFPACK_static )
target_link_libraries ( ParU_static PUBLIC SuiteSparse::UMFPACK_static )
else ( )
target_link_libraries ( ParU_static PUBLIC SuiteSparse::UMFPACK )
endif ( )
endif ( )

# BLAS:
message ( STATUS "BLAS libraries: ${BLAS_LIBRARIES} ")
message ( STATUS "BLAS linker flags: ${BLAS_LINKER_FLAGS} ")
Expand All @@ -245,16 +255,6 @@ if ( BUILD_STATIC_LIBS )
include_directories ( ${BLAS_INCLUDE_DIRS} )
endif ( )

# cholmod:
if ( BUILD_SHARED_LIBS )
target_include_directories ( ParU PUBLIC
"$<TARGET_PROPERTY:SuiteSparse::CHOLMOD,INTERFACE_INCLUDE_DIRECTORIES>" )
endif ( )
if ( BUILD_STATIC_LIBS )
target_include_directories ( ParU_static PUBLIC
"$<TARGET_PROPERTY:SuiteSparse::CHOLMOD,INTERFACE_INCLUDE_DIRECTORIES>" )
endif ( )

#-------------------------------------------------------------------------------
# PARU installation location
#-------------------------------------------------------------------------------
Expand Down
10 changes: 8 additions & 2 deletions SPEX/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,7 @@ configure_file ( "Config/SPEX_version.tex.in"
#-------------------------------------------------------------------------------

include_directories ( SPEX_Left_LU/Source SPEX_Util/Source Include
SPEX_Left_LU/Demo
${GMP_INCLUDE_DIR} ${MPFR_INCLUDE_DIR} )
SPEX_Left_LU/Demo )

#-------------------------------------------------------------------------------
# dynamic spex library properties
Expand Down Expand Up @@ -177,20 +176,24 @@ endif ( )
# MPFR:
if ( BUILD_SHARED_LIBS )
target_link_libraries ( SPEX PRIVATE ${MPFR_LIBRARIES} )
target_include_directories ( SPEX PRIVATE ${MPFR_INCLUDE_DIR} )
endif ( )
if ( BUILD_STATIC_LIBS )
list ( APPEND SPEX_STATIC_LIBS ${MPFR_STATIC} )
target_link_libraries ( SPEX_static PUBLIC ${MPFR_STATIC} )
target_include_directories ( SPEX_static PRIVATE ${MPFR_INCLUDE_DIR} )
endif ( )

# GMP:
# must occur after MPFR
if ( BUILD_SHARED_LIBS )
target_link_libraries ( SPEX PRIVATE ${GMP_LIBRARIES} )
target_include_directories ( SPEX PRIVATE ${GMP_INCLUDE_DIR} )
endif ( )
if ( BUILD_STATIC_LIBS )
list ( APPEND SPEX_STATIC_LIBS ${GMP_STATIC} )
target_link_libraries ( SPEX_static PUBLIC ${GMP_STATIC} )
target_include_directories ( SPEX_static PRIVATE ${GMP_INCLUDE_DIR} )
endif ( )

# libm:
Expand Down Expand Up @@ -349,6 +352,9 @@ if ( DEMO )
target_link_libraries ( example PUBLIC SPEX_static )
target_link_libraries ( example2 PUBLIC SPEX_static )
endif ( )
target_include_directories ( spexlu_demo PRIVATE ${MPFR_INCLUDE_DIR} ${GMP_INCLUDE_DIR} )
target_include_directories ( example PRIVATE ${MPFR_INCLUDE_DIR} ${GMP_INCLUDE_DIR} )
target_include_directories ( example2 PRIVATE ${MPFR_INCLUDE_DIR} ${GMP_INCLUDE_DIR} )

else ( )

Expand Down
56 changes: 28 additions & 28 deletions SPQR/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,34 @@ if ( BUILD_STATIC_LIBS )
endif ( )
endif ( )

# CHOLMOD:
# link with CHOLMOD and its dependencies
if ( BUILD_SHARED_LIBS )
target_link_libraries ( SPQR PRIVATE SuiteSparse::CHOLMOD )
endif ( )
if ( BUILD_STATIC_LIBS )
if ( TARGET SuiteSparse::CHOLMOD_static )
target_link_libraries ( SPQR_static PUBLIC SuiteSparse::CHOLMOD_static )
else ( )
target_link_libraries ( SPQR_static PUBLIC SuiteSparse::CHOLMOD )
endif ( )
endif ( )

if ( SUITESPARSE_CUDA )
if ( BUILD_SHARED_LIBS )
target_link_libraries ( SPQR PRIVATE GPUQREngine GPURuntime )
target_compile_definitions ( SPQR PUBLIC "SUITESPARSE_CUDA" )
endif ( )
set ( SPQR_CFLAGS "-DSUITESPARSE_CUDA" )
if ( BUILD_STATIC_LIBS )
target_link_libraries ( SPQR_static PUBLIC GPUQREngine_static GPURuntime_static )
target_compile_definitions ( SPQR_static PUBLIC "SUITESPARSE_CUDA" )
endif ( )

# CUDA
add_subdirectory ( SPQRGPU )
endif ( )

# OpenMP:
if ( OPENMP_FOUND )
if ( BUILD_SHARED_LIBS )
Expand Down Expand Up @@ -204,34 +232,6 @@ if ( BUILD_STATIC_LIBS )
target_include_directories ( SPQR_static PRIVATE ${BLAS_INCLUDE_DIRS} )
endif ( )

# CHOLMOD:
# link with CHOLMOD and its dependencies
if ( BUILD_SHARED_LIBS )
target_link_libraries ( SPQR PRIVATE SuiteSparse::CHOLMOD )
endif ( )
if ( BUILD_STATIC_LIBS )
if ( TARGET SuiteSparse::CHOLMOD_static )
target_link_libraries ( SPQR_static PUBLIC SuiteSparse::CHOLMOD_static )
else ( )
target_link_libraries ( SPQR_static PUBLIC SuiteSparse::CHOLMOD )
endif ( )
endif ( )

if ( SUITESPARSE_CUDA )
# CUDA
add_subdirectory ( SPQRGPU )

if ( BUILD_SHARED_LIBS )
target_link_libraries ( SPQR PRIVATE GPUQREngine GPURuntime )
target_compile_definitions ( SPQR PUBLIC "SUITESPARSE_CUDA" )
endif ( )
set ( SPQR_CFLAGS "-DSUITESPARSE_CUDA" )
if ( BUILD_STATIC_LIBS )
target_link_libraries ( SPQR_static PUBLIC GPUQREngine_static GPURuntime_static )
target_compile_definitions ( SPQR_static PUBLIC "SUITESPARSE_CUDA" )
endif ( )
endif ( )

#-------------------------------------------------------------------------------
# SPQR installation location
#-------------------------------------------------------------------------------
Expand Down
72 changes: 36 additions & 36 deletions UMFPACK/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -201,11 +201,41 @@ if ( BUILD_STATIC_LIBS )
endif ( )
endif ( )

# AMD:
if ( BUILD_SHARED_LIBS )
target_link_libraries ( UMFPACK PRIVATE SuiteSparse::AMD )
target_include_directories ( UMFPACK PUBLIC
"$<TARGET_PROPERTY:SuiteSparse::AMD,INTERFACE_INCLUDE_DIRECTORIES>" )
endif ( )
if ( BUILD_STATIC_LIBS )
if ( TARGET SuiteSparse::AMD_static )
target_link_libraries ( UMFPACK_static PUBLIC SuiteSparse::AMD_static )
else ( )
target_link_libraries ( UMFPACK_static PUBLIC SuiteSparse::AMD )
endif ( )
endif ( )

# CHOLMOD:
if ( NOT NCHOLMOD )
# link with CHOLMOD and its dependencies, both required and optional
if ( BUILD_SHARED_LIBS )
target_link_libraries ( UMFPACK PRIVATE SuiteSparse::CHOLMOD )
endif ( )
if ( BUILD_STATIC_LIBS )
set ( UMFPACK_STATIC_MODULES "${UMFPACK_STATIC_MODULES} CHOLMOD" )
if ( TARGET SuiteSparse::CHOLMOD_static )
target_link_libraries ( UMFPACK_static PUBLIC SuiteSparse::CHOLMOD_static )
else ( )
target_link_libraries ( UMFPACK_static PUBLIC SuiteSparse::CHOLMOD )
endif ( )
endif ( )
endif ( )

# OpenMP:
if ( OPENMP_FOUND )
message ( STATUS "OpenMP C libraries: ${OpenMP_C_LIBRARIES} ")
message ( STATUS "OpenMP C include: ${OpenMP_C_INCLUDE_DIRS} ")
message ( STATUS "OpenMP C flags: ${OpenMP_C_FLAGS} ")
message ( STATUS "OpenMP C libraries: ${OpenMP_C_LIBRARIES}" )
message ( STATUS "OpenMP C include: ${OpenMP_C_INCLUDE_DIRS}" )
message ( STATUS "OpenMP C flags: ${OpenMP_C_FLAGS}" )
if ( BUILD_SHARED_LIBS )
target_link_libraries ( UMFPACK PRIVATE ${OpenMP_C_LIBRARIES} )
endif ( )
Expand All @@ -228,24 +258,10 @@ if ( NOT WIN32 )
endif ( )
endif ( )

# AMD:
if ( BUILD_SHARED_LIBS )
target_link_libraries ( UMFPACK PRIVATE SuiteSparse::AMD )
target_include_directories ( UMFPACK PUBLIC
"$<TARGET_PROPERTY:SuiteSparse::AMD,INTERFACE_INCLUDE_DIRECTORIES>" )
endif ( )
if ( BUILD_STATIC_LIBS )
if ( TARGET SuiteSparse::AMD_static )
target_link_libraries ( UMFPACK_static PUBLIC SuiteSparse::AMD_static )
else ( )
target_link_libraries ( UMFPACK_static PUBLIC SuiteSparse::AMD )
endif ( )
endif ( )

# BLAS:
message ( STATUS "BLAS libraries: ${BLAS_LIBRARIES} ")
message ( STATUS "BLAS include: ${BLAS_INCLUDE_DIRS} ")
message ( STATUS "BLAS linker flags: ${BLAS_LINKER_FLAGS} ")
message ( STATUS "BLAS libraries: ${BLAS_LIBRARIES}" )
message ( STATUS "BLAS include: ${BLAS_INCLUDE_DIRS}" )
message ( STATUS "BLAS linker flags: ${BLAS_LINKER_FLAGS}" )
if ( BUILD_SHARED_LIBS )
target_link_libraries ( UMFPACK PRIVATE ${BLAS_LIBRARIES} )
endif ( )
Expand All @@ -255,22 +271,6 @@ if ( BUILD_STATIC_LIBS )
endif ( )
include_directories ( ${BLAS_INCLUDE_DIRS} )

# CHOLMOD:
if ( NOT NCHOLMOD )
# link with CHOLMOD and its dependencies, both required and optional
if ( BUILD_SHARED_LIBS )
target_link_libraries ( UMFPACK PRIVATE SuiteSparse::CHOLMOD )
endif ( )
if ( BUILD_STATIC_LIBS )
set ( UMFPACK_STATIC_MODULES "${UMFPACK_STATIC_MODULES} CHOLMOD" )
if ( TARGET SuiteSparse::CHOLMOD_static )
target_link_libraries ( UMFPACK_static PUBLIC SuiteSparse::CHOLMOD_static )
else ( )
target_link_libraries ( UMFPACK_static PUBLIC SuiteSparse::CHOLMOD )
endif ( )
endif ( )
endif ( )

#-------------------------------------------------------------------------------
# UMFPACK installation location
#-------------------------------------------------------------------------------
Expand Down

0 comments on commit dfb32d8

Please sign in to comment.