Skip to content

Commit 322cb65

Browse files
committed
Modernize the Config.cmake export
Signed-off-by: Cristian Le <[email protected]>
1 parent a0f6ffe commit 322cb65

File tree

7 files changed

+62
-47
lines changed

7 files changed

+62
-47
lines changed

CMAKE/scalapack-config-build.cmake.in

Lines changed: 0 additions & 1 deletion
This file was deleted.

CMAKE/scalapack-config-install.cmake.in

Lines changed: 0 additions & 2 deletions
This file was deleted.

CMAKE/scalapack-config-version.cmake.in

Lines changed: 0 additions & 8 deletions
This file was deleted.

CMAKE/scalapackConfig.cmake.in

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
cmake_minimum_required(VERSION 3.17...4.0)
2+
3+
@PACKAGE_INIT@
4+
5+
include(${CMAKE_CURRENT_LIST_DIR}/scalapackTargets.cmake)
6+
7+
# Deprecated compatibility shims
8+
if(TARGET scalapack::scalapack)
9+
add_library(scalapack INTERFACE IMPORTED)
10+
target_link_libraries(scalapack INTERFACE scalapack::scalapack)
11+
set_target_properties(scalapack PROPERTIES
12+
DEPRECATION "Target scalapack is deprecated, use scalapack::scalapack instead."
13+
)
14+
endif()
15+
if(TARGET scalapack::scalapack-F)
16+
add_library(scalapack-F INTERFACE IMPORTED)
17+
target_link_libraries(scalapack-F INTERFACE scalapack::scalapack-F)
18+
set_target_properties(scalapack-F PROPERTIES
19+
DEPRECATION "Target scalapack-F is deprecated, use scalapack::scalapack-F instead."
20+
)
21+
endif()

CMakeLists.txt

Lines changed: 32 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,11 @@ if (UNIX)
7272
endif ()
7373
endif ()
7474

75+
# TODO: Remove this macro
7576
macro(SCALAPACK_install_library lib)
76-
install(TARGETS ${lib} EXPORT scalapack-targets
77-
RUNTIME DESTINATION Testing
78-
)
77+
install(TARGETS ${lib}
78+
EXPORT scalapackTargets
79+
)
7980
endmacro()
8081

8182
# --------------------------------------------------
@@ -227,6 +228,7 @@ append_subdir_files(src-C "SRC")
227228
if (NOT MSVC)
228229
set_source_files_properties(TOOLS/SL_gridreshape.c PROPERTIES COMPILE_OPTIONS "-Wno-error=implicit-function-declaration")
229230
add_library(scalapack ${blacs} ${tools} ${tools-C} ${extra_lapack} ${pblas} ${pblas-F} ${ptzblas} ${ptools} ${pbblas} ${redist} ${src} ${src-C})
231+
add_library(scalapack::scalapack ALIAS scalapack)
230232
set_target_properties(scalapack PROPERTIES
231233
VERSION ${SCALAPACK_VERSION}
232234
SOVERSION ${SCALAPACK_VERSION_MAJOR}.${SCALAPACK_VERSION_MINOR})
@@ -235,11 +237,13 @@ if (NOT MSVC)
235237
else () # Need to separate Fortran and C Code
236238
OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON )
237239
add_library(scalapack ${blacs} ${tools-C} ${pblas} ${ptools} ${redist} ${src-C})
240+
add_library(scalapack::scalapack ALIAS scalapack)
238241
set_target_properties(scalapack PROPERTIES
239242
VERSION ${SCALAPACK_VERSION}
240243
SOVERSION ${SCALAPACK_VERSION_MAJOR}.${SCALAPACK_VERSION_MINOR})
241244
target_link_libraries( scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_C)
242245
add_library(scalapack-F ${pblas-F} ${pbblas} ${ptzblas} ${tools} ${src} ${extra_lapack} )
246+
add_library(scalapack::scalapack-F ALIAS scalapack-F)
243247
set_target_properties(scalapack-F PROPERTIES
244248
VERSION ${SCALAPACK_VERSION}
245249
SOVERSION ${SCALAPACK_VERSION_MAJOR}.${SCALAPACK_VERSION_MINOR})
@@ -289,33 +293,36 @@ INCLUDE(CPack)
289293
# --------------------------------------------------
290294

291295

292-
export(TARGETS scalapack FILE scalapack-targets.cmake)
293-
294296
if( NOT LAPACK_FOUND )
295297
install(FILES
296298
${BLAS_LIBRARIES} ${LAPACK_LIBRARIES}
297299
DESTINATION ${CMAKE_INSTALL_LIBDIR}
298300
)
299301
endif( NOT LAPACK_FOUND )
300302

301-
configure_file(${SCALAPACK_SOURCE_DIR}/CMAKE/scalapack-config-version.cmake.in
302-
${SCALAPACK_BINARY_DIR}/scalapack-config-version.cmake @ONLY)
303-
configure_file(${SCALAPACK_SOURCE_DIR}/CMAKE/scalapack-config-build.cmake.in
304-
${SCALAPACK_BINARY_DIR}/scalapack-config.cmake @ONLY)
305-
306-
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scalapack.pc.in ${CMAKE_CURRENT_BINARY_DIR}/scalapack.pc)
307-
install(FILES
308-
${CMAKE_CURRENT_BINARY_DIR}/scalapack.pc
309-
DESTINATION ${PKG_CONFIG_DIR}
310-
)
311-
312-
configure_file(${SCALAPACK_SOURCE_DIR}/CMAKE/scalapack-config-install.cmake.in
313-
${SCALAPACK_BINARY_DIR}/CMakeFiles/scalapack-config.cmake @ONLY)
303+
include(CMakePackageConfigHelpers)
304+
configure_package_config_file(
305+
CMAKE/scalapackConfig.cmake.in
306+
scalapackConfig.cmake
307+
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/scalapack
308+
)
309+
write_basic_package_version_file(
310+
scalapackConfigVersion.cmake
311+
COMPATIBILITY SameMajorVersion
312+
)
313+
314+
install(EXPORT scalapackTargets
315+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/scalapack
316+
NAMESPACE scalapack
317+
)
318+
319+
configure_file(scalapack.pc.in scalapack.pc @ONLY)
314320
install(FILES
315-
${SCALAPACK_BINARY_DIR}/CMakeFiles/scalapack-config.cmake
316-
${SCALAPACK_BINARY_DIR}/scalapack-config-version.cmake
317-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/scalapack-${SCALAPACK_VERSION}
318-
)
319-
320-
install(EXPORT scalapack-targets
321-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/scalapack-${SCALAPACK_VERSION})
321+
${CMAKE_CURRENT_BINARY_DIR}/scalapack.pc
322+
DESTINATION ${PKG_CONFIG_DIR}
323+
)
324+
install(FILES
325+
${CMAKE_CURRENT_BINARY_DIR}/scalapackConfig.cmake
326+
${CMAKE_CURRENT_BINARY_DIR}/scalapackConfigVersion.cmake
327+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/scalapack
328+
)

TESTING/CMakeLists.txt

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
cmake_minimum_required(VERSION 3.26...4.0)
22

3-
## Old test-suite to be modernized
4-
# include only if this is included via `add_subdirectory`
5-
6-
if(DEFINED SCALAPACK_SOURCE_DIR)
7-
add_subdirectory(traditional)
8-
endif()
9-
10-
## Modern test-suite is an independent project
11-
12-
# TODO: Add the implementations
133
project(scalapack-tests
144
LANGUAGES C Fortran
155
)
6+
7+
if(NOT TARGET scalapack::scalapack)
8+
find_package(scalapack REQUIRED CONFIG)
9+
endif()
10+
1611
enable_testing()
12+
13+
# Old test-suite
14+
add_subdirectory(traditional)

TESTING/traditional/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ set(genex_gfortran_10
4040
function(setup_test_target)
4141
foreach(target IN LISTS ARGN)
4242
target_link_libraries(${target} PRIVATE
43-
scalapack
43+
scalapack::scalapack
4444
${LAPACK_LIBRARIES}
4545
${BLAS_LIBRARIES}
4646
MPI::MPI_Fortran

0 commit comments

Comments
 (0)