@@ -424,3 +424,76 @@ include(FindPackageHandleStandardArgs)
424424find_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