set(RIME_SOURCE_DIR ${PROJECT_SOURCE_DIR})
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)

# work around CMake build issues on macOS
aux_source_directory(. rime_plugins_src)

unset(plugins_objs)
unset(plugins_deps)
unset(plugins_modules)

if(DEFINED ENV{RIME_PLUGINS})
  set(plugins $ENV{RIME_PLUGINS})
  message(STATUS "Prescribed plugins: ${plugins}")
  if(NOT "${plugins}" STREQUAL "")
    string(REGEX REPLACE "[^ ]*/(librime-)?" "" plugins ${plugins})
    string(REPLACE " " ";" plugins ${plugins})
  endif()
else()
  file(GLOB plugin_files "*")
  foreach(file ${plugin_files})
    if(IS_DIRECTORY ${file})
      message(STATUS "Found plugin: ${file}")
      set(plugins ${plugins} ${file})
    endif()
  endforeach(file)
endif()

foreach(plugin ${plugins})
  unset(plugin_name)
  unset(plugin_objs)
  unset(plugin_deps)
  unset(plugin_modules)
  add_subdirectory(${plugin})
  if(BUILD_MERGED_PLUGINS)
    set(plugins_objs ${plugins_objs} ${plugin_objs})
    list(REMOVE_ITEM plugin_deps ${rime_library})
    set(plugins_deps ${plugins_deps} ${plugin_deps})
    set(plugins_modules ${plugins_modules} ${plugin_modules})
  else()
    message(STATUS "Plugin ${plugin_name} provides modules: ${plugin_modules}")
    add_library(${plugin_name} ${rime_plugins_src} ${plugin_objs})
    target_link_libraries(${plugin_name} ${plugin_deps})
    if(XCODE_VERSION)
      set_target_properties(${plugin_name} PROPERTIES INSTALL_NAME_DIR "@rpath")
    endif(XCODE_VERSION)
    install(TARGETS ${plugin_name} DESTINATION ${LIB_INSTALL_DIR})
  endif()
endforeach(plugin)

set(rime_plugins_objs ${plugins_objs} PARENT_SCOPE)
set(rime_plugins_deps ${plugins_deps} PARENT_SCOPE)
set(rime_plugins_modules ${plugins_modules} PARENT_SCOPE)
