project(CTKCommandLineModulesCore)

#
# 3rd party dependencies
#

#
# See CTK/CMake/ctkMacroBuildLib.cmake for details
#

set(KIT_export_directive "CTK_CMDLINEMODULECORE_EXPORT")

# Additional directories to include

# Source files
set(KIT_SRCS
  ctkCmdLineModuleBackend.cpp
  ctkCmdLineModuleCache.cpp
  ctkCmdLineModuleCache_p.h
  ctkCmdLineModuleConcurrentHelpers.cpp
  ctkCmdLineModuleDefaultPathBuilder.cpp
  ctkCmdLineModuleDescription.cpp
  ctkCmdLineModuleDescription_p.h
  ctkCmdLineModuleDirectoryWatcher.cpp
  ctkCmdLineModuleDirectoryWatcher_p.h
  ctkCmdLineModuleFrontend.cpp
  ctkCmdLineModuleFrontendFactory.cpp
  ctkCmdLineModuleFuture.cpp
  ctkCmdLineModuleFutureInterface_p.h
  ctkCmdLineModuleFutureInterface.cpp
  ctkCmdLineModuleFutureWatcher.cpp
  ctkCmdLineModuleManager.cpp
  ctkCmdLineModuleParameter.cpp
  ctkCmdLineModuleParameter_p.h
  ctkCmdLineModuleParameterGroup.cpp
  ctkCmdLineModuleParameterGroup_p.h
  ctkCmdLineModuleParameterParsers_p.h
  ctkCmdLineModulePathBuilder.cpp
  ctkCmdLineModuleResult.cpp
  ctkCmdLineModuleXmlProgressWatcher.cpp
  ctkCmdLineModuleReference.cpp
  ctkCmdLineModuleRunException.cpp
  ctkCmdLineModuleXmlException.cpp
  ctkCmdLineModuleXmlMsgHandler_p.h
  ctkCmdLineModuleXmlMsgHandler.cpp
  ctkCmdLineModuleXmlParser_p.h
  ctkCmdLineModuleXmlParser.cpp
  ctkCmdLineModuleXmlValidator.cpp
  ctkCmdLineModuleXslTransform.cpp
)

# Headers that should run through moc
set(KIT_MOC_SRCS
  ctkCmdLineModuleDirectoryWatcher.h
  ctkCmdLineModuleDirectoryWatcher_p.h
  ctkCmdLineModuleFutureWatcher.h
  ctkCmdLineModuleManager.h
)

QT4_GENERATE_MOCS(
  ctkCmdLineModuleFrontend.h
  ctkCmdLineModuleXmlProgressWatcher.h
)

#list(APPEND KIT_SRCS
#  ${CMAKE_CURRENT_BINARY_DIR}/moc_ctkCmdLineModuleXmlProgressWatcher.h
#)

# UI files
set(KIT_UI_FORMS
)

# Resources
set(KIT_resources
  Resources/ctkCmdLineModules.qrc
)

set(QT_USE_QTXMLPATTERNS 1)
include(${QT_USE_FILE})

# Target libraries - See CMake/ctkFunctionGetTargetLibraries.cmake
# The following macro will read the target libraries from the file 'target_libraries.cmake'
ctkFunctionGetTargetLibraries(KIT_target_libraries)

ctkMacroBuildLib(
  NAME ${PROJECT_NAME}
  EXPORT_DIRECTIVE ${KIT_export_directive}
  INCLUDE_DIRECTORIES ${KIT_include_directories}
  SRCS ${KIT_SRCS}
  MOC_SRCS ${KIT_MOC_SRCS}
  UI_FORMS ${KIT_UI_FORMS}
  TARGET_LIBRARIES ${KIT_target_libraries}
  RESOURCES ${KIT_resources}
  LIBRARY_TYPE ${CTK_LIBRARY_MODE}
  )

target_link_libraries(${PROJECT_NAME} ${QT_LIBRARIES})

if(CTK_WRAP_PYTHONQT_FULL OR CTK_WRAP_PYTHONQT_LIGHT)
  ctkMacroBuildLibWrapper(
    TARGET ${PROJECT_NAME}
    SRCS ${KIT_SRCS}
    WRAPPER_LIBRARY_TYPE ${CTK_LIBRARY_MODE}
    )
endif()

find_package(Doxygen)
if(DOXYGEN_FOUND)
  # Copy XML schema file to the Doxygen output directory
  add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/Resources/ctkCmdLineModule.xsd
                                                  ${CTK_BINARY_DIR}/Documentation/html/ctkCmdLineModule.xsd)
endif()

# Testing
if(BUILD_TESTING)
  add_subdirectory(Testing)
endif()
