project(virtuosoconverter)

# search packages used by KDE
set(KDE_MIN_VERSION "4.3.80")
find_package(KDE4 4.3.80 REQUIRED)
include(KDE4Defaults)
find_package(KDE4Workspace)
include(MacroLibrary)

set(SOPRANO_MIN_VERSION "2.3.68")
find_package(Soprano REQUIRED)
find_package(Nepomuk REQUIRED)

macro_log_feature(Soprano_FOUND "Soprano" "Soprano RDF storage libraries" "kdesupport" TRUE "" "Required to build anything.")
macro_log_feature(Nepomuk_FOUND "Nepomuk" "Nepomuk semantic desktop libraries" "kdelibs" TRUE "" "Required to build anything.")

include_directories(
  ${QT_INCLUDES}
  ${KDE4_INCLUDES}
  ${SOPRANO_INCLUDE_DIR}
  ${NEPOMUK_INCLUDE_DIR}
)

add_definitions(-DDISABLE_NEPOMUK_LEGACY=1)

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

set(virtuosoconverter_SRC
  main.cpp
  nepomukstuff.cpp
  virtuosocontroller.cpp
  sopranodirs.cpp
  isql.cpp
  converterdialog.cpp
  converterjob.cpp
)

kde4_add_executable(virtuosoconverter ${virtuosoconverter_SRC})
target_link_libraries(virtuosoconverter
  ${KDE4_KDECORE_LIBS}
  ${KDE4_KDEUI_LIBS}
  ${KDE4_KIO_LIBS}
  ${NEPOMUK_LIBRARIES}
  ${QT_QTGUI_LIBRARY}
  ${QT_QTDBUS_LIBRARY}
)

install( TARGETS virtuosoconverter ${INSTALL_TARGETS_DEFAULT_ARGS} )
install( FILES dump_graphs.sql load_graphs.sql DESTINATION ${DATA_INSTALL_DIR}/virtuosoconverter )


#
# build Virtuoso5 the ugly way
#

# Check if the source tree does already contain the v5 sources. If not -> download them
set(VIRTUOSO_V5_VERSION 5.0.13)
set(VIRTUOSO_V5_TARBALL virtuoso-opensource-${VIRTUOSO_V5_VERSION}.tar.gz)
set(VIRTUOSO_V5_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/virtuoso-opensource-${VIRTUOSO_V5_VERSION})

if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${VIRTUOSO_V5_TARBALL})
  set(VIRTUOSO_V5_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/${VIRTUOSO_V5_TARBALL})
else(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${VIRTUOSO_V5_TARBALL})
  set(VIRTUOSO_V5_SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${VIRTUOSO_V5_TARBALL})
endif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${VIRTUOSO_V5_TARBALL})

add_custom_command(
  OUTPUT ${VIRTUOSO_V5_SOURCE}
  COMMAND wget http://sourceforge.net/projects/virtuoso/files/virtuoso/${VIRTUOSO_V5_VERSION}/${VIRTUOSO_V5_TARBALL}/download
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  COMMENT "Downloading Virtuoso 5 sources...")
  
add_custom_command(
  OUTPUT ${VIRTUOSO_V5_SOURCE_DIR}/Makefile.am
  COMMAND tar xzf ${VIRTUOSO_V5_SOURCE}
  COMMAND touch ${VIRTUOSO_V5_SOURCE_DIR}/Makefile.am
  DEPENDS ${VIRTUOSO_V5_SOURCE}
  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  COMMENT "Extracting Virtuoso 5 sources...")

add_custom_command(
  OUTPUT ${VIRTUOSO_V5_SOURCE_DIR}/Makefile
  COMMAND ${VIRTUOSO_V5_SOURCE_DIR}/configure --disable-all-vads --disable-wbxml2 --disable-imsg --disable-openldap --disable-imagemagick
  DEPENDS ${VIRTUOSO_V5_SOURCE_DIR}/Makefile.am
  WORKING_DIRECTORY ${VIRTUOSO_V5_SOURCE_DIR}
  COMMENT "Configuring Virtuoso 5 sources...")

add_custom_target(virtuoso-t ALL
  COMMAND make
  DEPENDS ${VIRTUOSO_V5_SOURCE_DIR}/Makefile
  WORKING_DIRECTORY ${VIRTUOSO_V5_SOURCE_DIR}
  COMMENT "Building Virtuoso 5 sources...")

install(
  PROGRAMS ${VIRTUOSO_V5_SOURCE_DIR}/binsrc/virtuoso/virtuoso-t 
  DESTINATION ${DATA_INSTALL_DIR}/virtuosoconverter/v5)
