cmake_minimum_required(VERSION 2.4)

IF(NOT MULTI_THREADED)
  OPTION(MULTI_THREADED "Build multi-threaded httpd deamon (if possible)"
ON)
ENDIF(NOT MULTI_THREADED)

INCLUDE( ${WT_SOURCE_DIR}/cmake/WtFindBoost.txt )
INCLUDE(FindThreads)

#IF(NOT BOOST_WT_FOUND)
#  MESSAGE("** Error finding Wt required library: ")
#  MESSAGE("** Could not find a boost installation in " ${BOOST_DIR} ".")
#  MESSAGE("** It may be necessary to set appropriate values for the")
#  MESSAGE("   variables BOOST_DIR, BOOST_COMPILER, and BOOST_VERSION")
#  MESSAGE(FATAL_ERROR "** Wt requires the following C++ boost libraries:
#  boost_date_time, boost_regex, and boost_program_options, boost_signals,
#  and optionally boost_thread")
#ENDIF(NOT BOOST_WT_FOUND)

IF(BOOST_WT_MT_FOUND)
  IF(MULTI_THREADED)
    ADD_DEFINITIONS(-DTHREADED -D_REENTRANT -DBOOST_SPIRIT_THREADSAFE)
    MESSAGE("** Enabling multi threading.")
  ELSE(MULTI_THREADED)
    MESSAGE("** Disabling multi threading.")
    ADD_DEFINITIONS(-DBOOST_DISABLE_THREADS)
  ENDIF(MULTI_THREADED)
ELSE(BOOST_WT_MT_FOUND)
  MESSAGE("** Disabling multi threading.")
  ADD_DEFINITIONS(-DBOOST_DISABLE_THREADS)
ENDIF(BOOST_WT_MT_FOUND)

# Boost is used nearly everywhere, so we can put these here
INCLUDE_DIRECTORIES(${BOOST_INCLUDE_DIRS})
LINK_DIRECTORIES(${BOOST_LIB_DIRS})
IF(WIN32)
  IF(BOOST_DYNAMIC)
    ADD_DEFINITIONS(-DBOOST_ALL_DYN_LINK)
  ENDIF(BOOST_DYNAMIC)
ENDIF(WIN32)

IF(BOOST_WT_MT_FOUND)
  IF(MULTI_THREADED)
    ADD_DEFINITIONS(-DWT_THREADED -D_REENTRANT -DBOOST_SPIRIT_THREADSAFE)
  ELSE(MULTI_THREADED)
    ADD_DEFINITIONS(-DBOOST_DISABLE_THREADS)
  ENDIF(MULTI_THREADED)
ELSE(BOOST_WT_MT_FOUND)
  ADD_DEFINITIONS(-DBOOST_DISABLE_THREADS)
ENDIF(BOOST_WT_MT_FOUND)

ADD_DEFINITIONS(-DWT_DEPRECATED_3_0_0)

SET(TEST_SOURCES
  test.C
  auth/BCryptTest.C
  auth/SHA1Test.C
  chart/WChartTest.C
  json/JsonParserTest.C
  http/HttpClientTest.C
  mail/MailClientTest.C
  models/WBatchEditProxyModelTest.C
  models/WStandardItemModelTest.C
  private/HttpTest.C
  private/CExpressionParserTest.C
  private/I18n.C
  utf8/Utf8Test.C
  utf8/XmlTest.C
  wdatetime/WDateTimeTest.C
  length/WLengthTest.C
  color/WColorTest.C
  paintdevice/WSvgTest.C
)

IF (WT_HAS_WRASTERIMAGE)
   SET(TEST_SOURCES ${TEST_SOURCES}
     paintdevice/WRasterTest.C
   )
ENDIF(WT_HAS_WRASTERIMAGE)

# HAVE_SQLITE does not work: why ?
IF(ENABLE_SQLITE)
  ADD_DEFINITIONS(-DWTDBO)

  SET(TEST_SOURCES ${TEST_SOURCES}
    dbo/DboTest.C
    dbo/DboTest2.C
    dbo/Benchmark.C
    private/DboImplTest.C
  )

IF(TEST_DBO_BACKEND MATCHES "postgres")
  SET(TEST_LIBS wtdbo wtdbopostgres)
  ADD_DEFINITIONS(-DPOSTGRES)
ENDIF(TEST_DBO_BACKEND MATCHES "postgres")

IF(TEST_DBO_BACKEND MATCHES "firebird")
  SET(TEST_LIBS wtdbo wtdbofirebird)
  ADD_DEFINITIONS(-DFIREBIRD)	
ENDIF(TEST_DBO_BACKEND MATCHES "firebird")

IF(TEST_DBO_BACKEND MATCHES "sqlite")
  SET(TEST_LIBS wtdbo wtdbosqlite3)
  ADD_DEFINITIONS(-DSQLITE3)
ENDIF(TEST_DBO_BACKEND MATCHES "sqlite")

ENDIF(ENABLE_SQLITE)

ADD_EXECUTABLE(test
  ${TEST_SOURCES}
)

TARGET_LINK_LIBRARIES(test wt wttest ${TEST_LIBS} ${BOOST_FS_LIB})

IF( UNIX )
  TARGET_LINK_LIBRARIES( test dl )
ENDIF( UNIX )

INCLUDE_DIRECTORIES(${WT_SOURCE_DIR}/src)

IF (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/interactive)
  SUBDIRS(interactive)
ENDIF (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/interactive)
