include(CheckIncludeFileCXX)

macro_optional_add_subdirectory(duchainviewer)
macro_optional_add_subdirectory(konsole)
add_subdirectory(filemanager)
add_subdirectory(vcscommon)
add_subdirectory(projectmanagerview)
add_subdirectory(genericprojectmanager)
add_subdirectory(standardoutputview)
add_subdirectory(quickopen)
add_subdirectory(contextbrowser)
macro_optional_add_subdirectory(snippet)
macro_optional_add_subdirectory(cvs)
#add_subdirectory(classbrowser)
add_subdirectory(problemreporter)
add_subdirectory(execute)
add_subdirectory(sourceformatter)

macro_optional_find_package(Commoncpp)
#TODO: Improve detection, apparently we use headers that are not part of either
#      of these two libs, need to check for that.
macro_optional_find_package(Boost COMPONENTS thread serialization )
if(COMMONCPP2_FOUND AND Boost_FOUND)
    macro_push_required_vars()
    set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${Boost_INCLUDE_DIRS})
    check_include_file_cxx("boost/iostreams/categories.hpp" BOOST_HAS_CATEGORIES)
    check_include_file_cxx("boost/iostreams/stream.hpp" BOOST_HAS_STREAM)
    check_include_file_cxx("boost/iostreams/positioning.hpp" BOOST_HAS_POSITIONING)
    check_include_file_cxx("boost/archive/polymorphic_xml_iarchive.hpp" BOOST_HAS_XMLIARCHIVE)
    check_include_file_cxx("boost/archive/polymorphic_xml_oarchive.hpp" BOOST_HAS_XMLOARCHIVE)
    check_include_file_cxx("boost/archive/polymorphic_text_oarchive.hpp" BOOST_HAS_TXTIARCHIVE)
    check_include_file_cxx("boost/archive/polymorphic_text_iarchive.hpp" BOOST_HAS_TXTOARCHIVE)
    macro_pop_required_vars()
    if( NOT BOOST_HAS_CATEGORIES OR NOT BOOST_HAS_STREAM OR NOT BOOST_HAS_POSITIONING )
        message( STATUS "Didn't find needed headers (categories.hpp, stream.hpp and positioning.hpp) from Boost iostreams library")
    else( NOT BOOST_HAS_CATEGORIES OR NOT BOOST_HAS_STREAM OR NOT BOOST_HAS_POSITIONING )
      if( NOT BOOST_HAS_XMLIARCHIVE OR NOT BOOST_HAS_XMLOARCHIVE OR NOT BOOST_HAS_TXTIARCHIVE OR NOT BOOST_HAS_TXTOARCHIVE )
        message( STATUS "Didn't find needed headers (polymorphic_(xml,txt)_(iarchive,oarchive).hpp) from Boost archive library")
      else( NOT BOOST_HAS_XMLIARCHIVE OR NOT BOOST_HAS_XMLOARCHIVE OR NOT BOOST_HAS_TXTIARCHIVE OR NOT BOOST_HAS_TXTOARCHIVE )
        macro_optional_add_subdirectory(teamwork)
      endif( NOT BOOST_HAS_XMLIARCHIVE OR NOT BOOST_HAS_XMLOARCHIVE OR NOT BOOST_HAS_TXTIARCHIVE OR NOT BOOST_HAS_TXTOARCHIVE )
    endif( NOT BOOST_HAS_CATEGORIES OR NOT BOOST_HAS_STREAM OR NOT BOOST_HAS_POSITIONING )

endif(COMMONCPP2_FOUND AND Boost_FOUND)
macro_log_feature( COMMONCPP2_FOUND "Common C++2" "Support for Teamwork plugin integration" "http://ftp.gnu.org/pub/gnu/commoncpp/" FALSE "1.5.9" "The commoncpp2 libraries are needed for the Teamwork plugin" )
macro_log_feature( Boost_FOUND "Boost" "Support for Teamwork plugin integration" "http://www.boost.org/" FALSE "1.34.0" "The thread and serialization components of the boost C++ libraries are needed for the Teamwork plugin" )

macro_optional_find_package(SubversionLibrary)
macro_log_feature( SUBVERSION_FOUND "Subversion" "Support for Subversion integration" "http://subversion.tigris.org" FALSE "1.3.0" "The subversion libraries are needed for the Subversion support" )

if(SUBVERSION_FOUND)
    macro_optional_add_subdirectory(subversion)
endif(SUBVERSION_FOUND)

macro_optional_add_subdirectory(git)
macro_optional_add_subdirectory(mercurial)
macro_optional_add_subdirectory(bazaar)

macro_display_feature_log()


