cmake_minimum_required(VERSION 3.10)

project(dfmplugin-customtoolbar)
set(BIN_NAME dfm-customtoolbar-plugin)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

# 关键：必须开启 AUTOMOC，moc 才会处理 Q_PLUGIN_METADATA，
# 将 customtoolbar.json（含 IID）嵌入 .so，否则插件无法被文件管理器识别
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

# ---- 依赖查找 ----
find_package(Qt6 COMPONENTS Core Gui Widgets REQUIRED)
find_package(Dtk6 COMPONENTS Core Gui Widget REQUIRED)

# DFM 核心库（dfm6-base / dfm6-framework）
find_library(DFM6_BASE_LIB NAMES dfm6-base)
find_library(DFM6_FRAMEWORK_LIB NAMES dfm6-framework)
if(NOT DFM6_BASE_LIB OR NOT DFM6_FRAMEWORK_LIB)
    message(FATAL_ERROR "Cannot find dfm6-base / dfm6-framework. Install dde-file-manager-dev first.")
endif()

# DFM 头文件（dde-file-manager-dev 提供 /usr/include/dfm-base 与 /usr/include/dfm-framework）
find_path(DFM6_BASE_INCLUDE dfm-base/dfm_base_global.h PATH_SUFFIXES include)
find_path(DFM6_FRAMEWORK_INCLUDE dfm-framework/dpf.h PATH_SUFFIXES include)
if(NOT DFM6_BASE_INCLUDE OR NOT DFM6_FRAMEWORK_INCLUDE)
    message(FATAL_ERROR "Cannot find dfm-base/dfm-framework headers. Install dde-file-manager-dev or set DFM_INCLUDE_DIR.")
endif()

# ---- 插件目标 ----
file(GLOB_RECURSE PLUGIN_SOURCES CONFIGURE_DEPENDS
    "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp"
)

add_library(${BIN_NAME} SHARED ${PLUGIN_SOURCES})


target_include_directories(${BIN_NAME} PRIVATE
    ${DFM6_BASE_INCLUDE}
    ${DFM6_FRAMEWORK_INCLUDE}
)

target_link_libraries(${BIN_NAME} PRIVATE
    Qt6::Core
    Qt6::Gui
    Qt6::Widgets
    Dtk6::Widget
    ${DFM6_BASE_LIB}
    ${DFM6_FRAMEWORK_LIB}
)

# ---- 安装 ----
include(GNUInstallDirs)
install(TARGETS ${BIN_NAME}
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/dde-file-manager/plugins/filemanager-core)
install(FILES customtoolbar.json
    DESTINATION ${CMAKE_INSTALL_LIBDIR}/dde-file-manager/plugins/filemanager-core)
