#国密加解密库

message(STATUS "***** Find SM Library *****")

#寻找头文件
find_path(SM_INCLUDE_DIR
    NAMES smclass.h
    PATHS ${CMAKE_CURRENT_LIST_DIR}/inc
    NO_DEFAULT_PATH
)

#查找源文件
find_path(SM_SOURCE_DIR
    NAMES smclass.cpp
    PATHS ${CMAKE_CURRENT_LIST_DIR}/src
    NO_DEFAULT_PATH
)

#find_linrary查找的是“.lib”,“.a”,“.so”文件,不会查找.dll文件
#因此,在这里无法使用,直接使用list添加路径

# unset(SM_LIB CACHE)
# find_library(SM_LIB
#     NAMES SM_DLL
#     HINTS ${CMAKE_CURRENT_LIST_DIR}/libs/win/x64
#     NO_DEFAULT_PATH)
            
# list(APPEND SM_LIB_LIBRARY ${SM_LIB})
# message(STATUS "SM_LIB: ${SM_LIB}")

#查找库文件,需要判断操作系统,位数
if(CMAKE_SYSTEM_NAME MATCHES "Windows")
    if(CMAKE_SIZEOF_VOID_P EQUAL 8)
        if(CMAKE_BUILD_TYPE MATCHES "Debug")
            list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x64/with_debug_info/libSM_DLL.lib)
            list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x64/ucrtbased.dll)
            list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x64/vcruntime140d.dll)
        else()
            list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x64/libSM_DLL.lib)
            list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x64/ucrtbase.dll)
            list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x64/vcruntime140.dll)
        endif()
    elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
        if(CMAKE_BUILD_TYPE MATCHES "Debug")
            list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x86/with_debug_info/libSM_DLL.lib)
            list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x86/ucrtbased.dll)
            list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x86/vcruntime140d.dll)
        else()
            list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x86/libSM_DLL.lib)
            list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x86/ucrtbase.dll)
            list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/win/x86/vcruntime140.dll)
        endif()
    endif()
#添加Linux版本
elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
    if(CMAKE_BUILD_TYPE MATCHES "Debug")
        list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/linux/x64/libSM_Dll.so)
    else()
        list(APPEND SM_LIB_LIBRARY ${CMAKE_CURRENT_LIST_DIR}/libs/linux/x64/libSM_Dll.so)
    endif()
endif()

# message(STATUS "SM_LIB_LIBRARY: ${SM_LIB_LIBRARY}")

# message(STATUS "SM_INCLUDE_DIR: ${SM_INCLUDE_DIR}")
# message(STATUS "SM_SOURCE_DIR: ${SM_SOURCE_DIR}")
# message(STATUS "SM_LIB_LIBRARY: ${SM_LIB_LIBRARY}")


#设置查找到后的变量
if(SM_INCLUDE_DIR AND SM_SOURCE_DIR AND SM_LIB_LIBRARY)
    set(SM_FOUND TRUE)
    set(SM_VERSION "1.1.0")
else()
    set(SM_FOUND FALSE)
endif()

message(STATUS "include : SM_INCLUDE_DIR")
message(STATUS "source : SM_SOURCE_DIR")
message(STATUS "Library : SM_LIB_LIBRARY")

message(STATUS "---------------------------------")