# MTP Plugin for far2l

# Basic source files
set(SOURCES
    src/FARPlugin.cpp
    src/MTPPlugin.cpp
    src/MTPDevice.cpp
    src/MTPFileSystem.cpp
    src/MTPLog.cpp
    src/MTPDialogs.cpp
)

# Create the plugin
add_library(mtp MODULE ${SOURCES})

# Link with required libraries
target_link_libraries(mtp utils far2l)

target_link_libraries(mtp 
    -lmtp
)

# Convert version to mumeric form
find_path(LIBMTP_INCLUDE_DIR libmtp.h)
file(READ "${LIBMTP_INCLUDE_DIR}/libmtp.h" LIBMTP_HEADER_CONTENT)
string(REGEX MATCH "#define[ \t]+LIBMTP_VERSION[ \t]+([0-9]+)\\.([0-9]+)\\.([0-9]+)" _match "${LIBMTP_HEADER_CONTENT}")
set(LIBMTP_VERSION_MAJOR "${CMAKE_MATCH_1}")
set(LIBMTP_VERSION_MINOR "${CMAKE_MATCH_2}")
set(LIBMTP_VERSION_PATCH "${CMAKE_MATCH_3}")
math(EXPR LIBMTP_VERSION_CODE "${LIBMTP_VERSION_MAJOR} * 10000 + ${LIBMTP_VERSION_MINOR} * 100 + ${LIBMTP_VERSION_PATCH}")

include(CheckSymbolExists)

set(CMAKE_REQUIRED_INCLUDES ${LIBMTP_INCLUDE_DIR})
check_symbol_exists(LIBMTP_FreeMemory "libmtp.h" HAVE_LIBMTP_FREEMEMORY)

# Add compile definitions
target_compile_definitions(mtp PRIVATE
    -DWINPORT_DIRECT
    -DUNICODE
    -D_UNICODE
    -DFAR_DONT_USE_INTERNALS
    -DLIBMTP_VERSION_CODE=${LIBMTP_VERSION_CODE}
)

if(HAVE_LIBMTP_FREEMEMORY)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_LIBMTP_FREEMEMORY")
endif()

# Add include directories
target_include_directories(mtp PRIVATE .)
target_include_directories(mtp PRIVATE ../far2l/far2sdk)
target_include_directories(mtp PRIVATE ../WinPort)

# Set output properties
set_target_properties(mtp PROPERTIES
    LIBRARY_OUTPUT_DIRECTORY "${INSTALL_DIR}/Plugins/mtp/plug"
    PREFIX ""
    SUFFIX ".far-plug-wide"
)

# Copy resource files
set(CURRENT_TARGET "mtp")
file(GLOB_RECURSE RESOURCE_FILES
    RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/configs
    "${CMAKE_CURRENT_SOURCE_DIR}/configs/*"
)

# No auxiliary files for MTP plugin yet
