Skip to content

Commit 53df09e

Browse files
committed
cmake: add LAPACKE imported targets
1 parent 49a7986 commit 53df09e

File tree

2 files changed

+75
-3
lines changed

2 files changed

+75
-3
lines changed

CMakeLists.txt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,10 @@ function(configureBitpitTargetDependencies TARGET_NAME DEPENDENCIES_SCOPE)
108108
endif()
109109

110110
if (LAPACKE_FOUND)
111-
set(LAPACKE_PRIVATE_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/external/LAPACKE/include")
111+
target_link_libraries(${TARGET_NAME} ${DEPENDENCIES_SCOPE} LAPACKE::LAPACKE)
112112

113-
target_link_libraries(${TARGET_NAME} ${DEPENDENCIES_SCOPE} ${LAPACKE_LIBRARIES})
113+
set(LAPACKE_PRIVATE_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/external/LAPACKE/include")
114114
target_include_directories(${TARGET_NAME} PRIVATE ${LAPACKE_PRIVATE_INCLUDE_DIR})
115-
target_include_directories(${TARGET_NAME} ${DEPENDENCIES_SCOPE} ${LAPACKE_INCLUDE_DIRS})
116115
endif()
117116

118117
if (PETSC_FOUND)

external/LAPACKE/cmake/FindLAPACKE.cmake

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,3 +424,76 @@ include(FindPackageHandleStandardArgs)
424424
find_package_handle_standard_args(LAPACKE DEFAULT_MSG
425425
LAPACKE_LIBRARIES
426426
LAPACKE_WORKS)
427+
428+
#-----------------------------------------------------------------------------
429+
# Create imported target
430+
#-----------------------------------------------------------------------------
431+
if (NOT TARGET LAPACKE::LAPACKE)
432+
set(LAPACKE_LIBRARY_TARGETS "")
433+
foreach(LIBRARY_PATH ${LAPACKE_LIBRARIES})
434+
get_filename_component(LIBRARY_FILENAME "${LIBRARY_PATH}" NAME)
435+
get_filename_component(LIBRARY_EXTENSION "${LIBRARY_PATH}" LAST_EXT)
436+
437+
string(REGEX REPLACE "\\.[^.]*$" "" LIBRARY_TARGET "${LIBRARY_FILENAME}")
438+
string(REGEX REPLACE "^lib" "" LIBRARY_TARGET "${LIBRARY_TARGET}")
439+
set(LIBRARY_TARGET "LAPACKE::${LIBRARY_TARGET}_library")
440+
441+
if (LIBRARY_EXTENSION STREQUAL ".a")
442+
set(TARGET_TYPE "STATIC")
443+
set(TARGET_IMPORTED_LOCATION "${LIBRARY_PATH}")
444+
elseif (LIBRARY_EXTENSION STREQUAL ".lib")
445+
get_filename_component(LIBRARY_BASENAME "${LIBRARY_FILENAME}" NAME_WE)
446+
get_filename_component(LIBRARY_DIRECTORY "${LIBRARY_PATH}" DIRECTORY)
447+
set(LIBRARY_DLL_SEARCH_PATHS
448+
"${LIBRARY_DIRECTORY}"
449+
"${LIBRARY_DIRECTORY}/../bin"
450+
"${LIBRARY_DIRECTORY}/../../bin"
451+
"${LIBRARY_DIRECTORY}/../../redist/intel64"
452+
"${LIBRARY_DIRECTORY}/../../../redist/intel64"
453+
"${LIBRARY_DIRECTORY}/../../redist/intel64/compiler"
454+
"${LIBRARY_DIRECTORY}/../../../redist/intel64/compiler"
455+
"${LIBRARY_DIRECTORY}/../../redist/intel64_win/compiler"
456+
"${LIBRARY_DIRECTORY}/../../../redist/intel64_win/compiler"
457+
)
458+
459+
set(TARGET_TYPE "STATIC")
460+
set(TARGET_IMPORTED_LOCATION "${LIBRARY_PATH}")
461+
foreach(LIBRARY_DLL_SEARCH_PATH IN LISTS LIBRARY_DLL_SEARCH_PATHS)
462+
string(REGEX REPLACE "_dll$" "" CANDIDATE_LIBRARY_DLL_PATH "${LIBRARY_BASENAME}")
463+
set(CANDIDATE_LIBRARY_DLL_PATH "${LIBRARY_DLL_SEARCH_PATH}/${CANDIDATE_LIBRARY_DLL_PATH}.dll")
464+
if(EXISTS "${CANDIDATE_LIBRARY_DLL_PATH}")
465+
set(TARGET_TYPE "SHARED")
466+
set(TARGET_IMPORTED_LOCATION "${CANDIDATE_LIBRARY_DLL_PATH}")
467+
break()
468+
endif()
469+
470+
string(REGEX REPLACE "_dll$" "" CANDIDATE_LIBRARY_DLL_PATH "${LIBRARY_BASENAME}")
471+
set(CANDIDATE_LIBRARY_DLL_PATH "${LIBRARY_DLL_SEARCH_PATH}/${CANDIDATE_LIBRARY_DLL_PATH}.2.dll")
472+
if(EXISTS "${CANDIDATE_LIBRARY_DLL_PATH}")
473+
set(TARGET_TYPE "SHARED")
474+
set(TARGET_IMPORTED_LOCATION "${CANDIDATE_LIBRARY_DLL_PATH}")
475+
break()
476+
endif()
477+
endforeach()
478+
elseif (LIBRARY_EXTENSION STREQUAL ".so")
479+
set(TARGET_TYPE "SHARED")
480+
set(TARGET_IMPORTED_LOCATION "${LIBRARY_PATH}")
481+
elseif (LIBRARY_EXTENSION STREQUAL ".dll")
482+
set(TARGET_TYPE "SHARED")
483+
set(TARGET_IMPORTED_LOCATION "${LIBRARY_PATH}")
484+
endif()
485+
486+
add_library(${LIBRARY_TARGET} ${TARGET_TYPE} IMPORTED)
487+
set_target_properties(${LIBRARY_TARGET} PROPERTIES IMPORTED_LOCATION ${TARGET_IMPORTED_LOCATION})
488+
if (WIN32 AND TARGET_TYPE STREQUAL "SHARED")
489+
set_target_properties(${LIBRARY_TARGET} PROPERTIES IMPORTED_IMPLIB "${LIBRARY_PATH}")
490+
endif()
491+
set_target_properties(${LIBRARY_TARGET} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LAPACKE_INCLUDE_DIRS}")
492+
set_target_properties(${LIBRARY_TARGET} PROPERTIES INTERFACE_LINK_OPTIONS "${LAPACKE_LINKER_FLAGS}")
493+
494+
list(APPEND LAPACKE_LIBRARY_TARGETS ${LIBRARY_TARGET})
495+
endforeach()
496+
497+
add_library(LAPACKE::LAPACKE INTERFACE IMPORTED)
498+
set_target_properties(LAPACKE::LAPACKE PROPERTIES INTERFACE_LINK_LIBRARIES "${LAPACKE_LIBRARY_TARGETS}")
499+
endif()

0 commit comments

Comments
 (0)