@@ -394,3 +394,76 @@ include(FindPackageHandleStandardArgs)
394394find_package_handle_standard_args(CBLAS DEFAULT_MSG
395395 CBLAS_LIBRARIES
396396 CBLAS_WORKS)
397+
398+ #-----------------------------------------------------------------------------
399+ # Create imported target
400+ #-----------------------------------------------------------------------------
401+ if (NOT TARGET CBLAS::CBLAS)
402+ set (CBLAS_LIBRARY_TARGETS "" )
403+ foreach (LIBRARY_PATH ${CBLAS_LIBRARIES} )
404+ get_filename_component (LIBRARY_FILENAME "${LIBRARY_PATH} " NAME )
405+ get_filename_component (LIBRARY_EXTENSION "${LIBRARY_PATH} " LAST_EXT)
406+
407+ string (REGEX REPLACE "\\ .[^.]*$" "" LIBRARY_TARGET "${LIBRARY_FILENAME} " )
408+ string (REGEX REPLACE "^lib" "" LIBRARY_TARGET "${LIBRARY_TARGET} " )
409+ set (LIBRARY_TARGET "CBLAS::${LIBRARY_TARGET} _library" )
410+
411+ if (LIBRARY_EXTENSION STREQUAL ".a" )
412+ set (TARGET_TYPE "STATIC" )
413+ set (TARGET_IMPORTED_LOCATION "${LIBRARY_PATH} " )
414+ elseif (LIBRARY_EXTENSION STREQUAL ".lib" )
415+ get_filename_component (LIBRARY_BASENAME "${LIBRARY_FILENAME} " NAME_WE )
416+ get_filename_component (LIBRARY_DIRECTORY "${LIBRARY_PATH} " DIRECTORY )
417+ set (LIBRARY_DLL_SEARCH_PATHS
418+ "${LIBRARY_DIRECTORY} "
419+ "${LIBRARY_DIRECTORY} /../bin"
420+ "${LIBRARY_DIRECTORY} /../../redist/intel64"
421+ "${LIBRARY_DIRECTORY} /../../../redist/intel64"
422+ "${LIBRARY_DIRECTORY} /../../redist/intel64/compiler"
423+ "${LIBRARY_DIRECTORY} /../../../redist/intel64/compiler"
424+ "${LIBRARY_DIRECTORY} /../../redist/intel64_win/compiler"
425+ "${LIBRARY_DIRECTORY} /../../../redist/intel64_win/compiler"
426+
427+ )
428+
429+ set (TARGET_TYPE "STATIC" )
430+ set (TARGET_IMPORTED_LOCATION "${LIBRARY_PATH} " )
431+ foreach (LIBRARY_DLL_SEARCH_PATH IN LISTS LIBRARY_DLL_SEARCH_PATHS)
432+ string (REGEX REPLACE "_dll$" "" CANDIDATE_LIBRARY_DLL_PATH "${LIBRARY_BASENAME} " )
433+ set (CANDIDATE_LIBRARY_DLL_PATH "${LIBRARY_DLL_SEARCH_PATH} /${CANDIDATE_LIBRARY_DLL_PATH} .dll" )
434+ if (EXISTS "${CANDIDATE_LIBRARY_DLL_PATH} " )
435+ set (TARGET_TYPE "SHARED" )
436+ set (TARGET_IMPORTED_LOCATION "${CANDIDATE_LIBRARY_DLL_PATH} " )
437+ break ()
438+ endif ()
439+
440+ string (REGEX REPLACE "_dll$" "" CANDIDATE_LIBRARY_DLL_PATH "${LIBRARY_BASENAME} " )
441+ set (CANDIDATE_LIBRARY_DLL_PATH "${LIBRARY_DLL_SEARCH_PATH} /${CANDIDATE_LIBRARY_DLL_PATH} .2.dll" )
442+ if (EXISTS "${CANDIDATE_LIBRARY_DLL_PATH} " )
443+ set (TARGET_TYPE "SHARED" )
444+ set (TARGET_IMPORTED_LOCATION "${CANDIDATE_LIBRARY_DLL_PATH} " )
445+ break ()
446+ endif ()
447+ endforeach ()
448+ elseif (LIBRARY_EXTENSION STREQUAL ".so" )
449+ set (TARGET_TYPE "SHARED" )
450+ set (TARGET_IMPORTED_LOCATION "${LIBRARY_PATH} " )
451+ elseif (LIBRARY_EXTENSION STREQUAL ".dll" )
452+ set (TARGET_TYPE "SHARED" )
453+ set (TARGET_IMPORTED_LOCATION "${LIBRARY_PATH} " )
454+ endif ()
455+
456+ add_library (${LIBRARY_TARGET} ${TARGET_TYPE} IMPORTED )
457+ set_target_properties (${LIBRARY_TARGET} PROPERTIES IMPORTED_LOCATION ${TARGET_IMPORTED_LOCATION} )
458+ if (WIN32 AND TARGET_TYPE STREQUAL "SHARED" )
459+ set_target_properties (${LIBRARY_TARGET} PROPERTIES IMPORTED_IMPLIB "${LIBRARY_PATH} " )
460+ endif ()
461+ set_target_properties (${LIBRARY_TARGET} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CBLAS_INCLUDE_DIRS} " )
462+ set_target_properties (${LIBRARY_TARGET} PROPERTIES INTERFACE_LINK_OPTIONS "${CBLAS_LINKER_FLAGS} " )
463+
464+ list (APPEND CBLAS_LIBRARY_TARGETS ${LIBRARY_TARGET} )
465+ endforeach ()
466+
467+ add_library (CBLAS::CBLAS INTERFACE IMPORTED )
468+ set_target_properties (CBLAS::CBLAS PROPERTIES INTERFACE_LINK_LIBRARIES "${CBLAS_LIBRARY_TARGETS} " )
469+ endif ()
0 commit comments