project(kxsldbg)
find_package(LibXml2 REQUIRED)
find_package(LibXslt REQUIRED)

include_directories (${CMAKE_SOURCE_DIR}/kxsldbg/ ${CMAKE_BINARY_DIR}/kxsldbg/)

check_symbol_exists(usleep "unistd.h" HAVE_USLEEP)
OPTION(ENABLE_XSLDBG_DEBUGGING "Enable it to have a lot of debugging message in xsldbg (default OFF)" OFF)

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config-kxsldbg.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kxsldbg.h )


MESSAGE(STATUS "ENABLE_XSLDBG_DEBUGGING : <${ENABLE_XSLDBG_DEBUGGING}>")

include_directories( ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/ ${CMAKE_BINARY_DIR}/kxsldbg/kxsldbgpart/ ${LIBXSLT_INCLUDE_DIR} ${LIBXML2_INCLUDE_DIR}  )

set(libqtnotfier_SRCS
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libqtnotfier/xsldbgthread.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libqtnotfier/xsldbgnotifier.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libqtnotfier/xsldbgevent.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libqtnotfier/xsldbgdebuggerbase.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libqtnotfier/qtnotifier2.cpp
    )

set(libxsldbg_SRCS
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/allmoc.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/xsldbgthread.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/xsldbg.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/xsldbgmsg.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/variable_cmds.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/utils.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/trace_cmds.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/template_cmds.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/search_cmds.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/search.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/param_cmds.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/os_cmds.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/options_unix.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/options.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/options_common.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/option_cmds.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/nodeview_cmds.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/help_unix.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/files_unix.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/files.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/file_cmds.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/debugXSL.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/debug.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/callstack.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/breakpoint_cmds.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/breakpoint.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/arraylist.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/libxsldbg/xsldbgsettingsmodel.cpp
    )

set(libkxsldbgcommon_SRCS
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgwalkspeedimpl.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgtemplatesimpl.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgsourcesimpl.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgoutputview.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgvariablesimpl.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbginspector.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgentitiesimpl.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgdoc.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgdialogbase.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgdebugger.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgconfigimpl.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/configdialogprivate.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgcallstackimpl.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgbreakpointsimpl.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/qxsldbgdoc.cpp
    ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/kxsldbg_part.cpp
    )

add_subdirectory( kxsldbgpart )
add_subdirectory( data )


########### next target ###############

set(kxsldbg_SRCS kxsldbg.cpp main.cpp ${libkxsldbgcommon_SRCS} ${libqtnotfier_SRCS} ${libxsldbg_SRCS})


kde4_add_ui_files(kxsldbgpart_PART_SRCS
	${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgbreakpoints.ui
	${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgcallstack.ui 
	${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgconfig.ui
	${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgentities.ui 
	${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgmsgdialog.ui 
	${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgvariables.ui
	${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgsources.ui
	${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgtemplates.ui
	${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/xsldbgwalkspeed.ui)


set(network_xml  ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/org.kde.kxsldbg.kxsldbg.xml)
qt4_add_dbus_interface(kxsldbg_SRCS ${network_xml} kxsldbgpartinterface)
qt4_add_dbus_adaptor(kxsldbg_SRCS ${network_xml} kxsldbg_part.h KXsldbgPart)

include_directories( ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/ ${LIBXSLT_INCLUDE_DIR} ${LIBXML2_INCLUDE_DIR}  )
kde4_add_executable(kxsldbg ${kxsldbg_SRCS})

add_dependencies(kxsldbg kxsldbgpart)
target_link_libraries(kxsldbg  ${KDE4_KTEXTEDITOR_LIBS} exslt ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${QT_QT3SUPPORT_LIBRARY})

install(TARGETS kxsldbg  ${INSTALL_TARGETS_DEFAULT_ARGS} )


########### next target ###############

set(xsldbg_SRCS xsldbgmain.cpp ${libxsldbg_SRCS} )


kde4_add_executable(xsldbg ${xsldbg_SRCS})

target_link_libraries(xsldbg exslt ${LIBXSLT_LIBRARIES} ${KDE4_KDEUI_LIBS} ${LIBXML2_LIBRARIES} ${QT_QT3SUPPORT_LIBRARY} )

install(TARGETS xsldbg  ${INSTALL_TARGETS_DEFAULT_ARGS} )


########### install files ###############

install( FILES  kxsldbg.desktop  DESTINATION ${XDG_APPS_INSTALL_DIR})
install( FILES  kxsldbg_shell.rc  DESTINATION ${DATA_INSTALL_DIR}/kxsldbg)
install( FILES ${CMAKE_SOURCE_DIR}/kxsldbg/kxsldbgpart/org.kde.kxsldbg.kxsldbg.xml DESTINATION ${DBUS_INTERFACES_INSTALL_DIR} )
kde4_install_icons(${ICON_INSTALL_DIR} )
