# Author: Łukasz Matuszewski

CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
PROJECT(SyNaTPG.wt)

SET(P_DEFINITIONS_DEBUG "")
SET(P_DEFINITIONS "")  

LIST(APPEND P_DEFINITIONS WT_DEPRECATED_3_0_0)

SET(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE true)

SET(CMAKE_VERBOSE_MAKEFILE ON)

IF(COMMAND CMAKE_POLICY)
  CMAKE_POLICY(SET CMP0002 OLD)
  CMAKE_POLICY(SET CMP0003 OLD)
  CMAKE_POLICY(SET CMP0005 OLD)
ENDIF(COMMAND CMAKE_POLICY)

IF(NOT SHARED_LIBS)
  MESSAGE("Building static libs")
  SET(WT_STATIC true)
  SET(WTHTTP_STATIC true)
  SET(WT_EXT_STATIC true)
  SET(WTDBO_STATIC true)
  SET(WTDBOSQLITE3_STATIC true)
  SET(WTDBOPOSTGRES_STATIC true)
ENDIF(NOT SHARED_LIBS)

SET(BUILD_SHARED_LIBS ${SHARED_LIBS})

SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/cmake)

#
# Ubuntu patched this compiler to hell
# gcc (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5
#
EXEC_PROGRAM(${CMAKE_CXX_COMPILER}
  ARGS --version
  OUTPUT_VARIABLE GCC_COMPILER_VERSION
)

IF(GCC_COMPILER_VERSION MATCHES ".*4\\.4\\.4\\-14ubuntu5.*")
  MESSAGE(" ")
  MESSAGE("    !!!!! WARNING Your compiler is BUGGY. !!!!! ")
  MESSAGE(" ")
  MESSAGE("    If possible, upgrade your compiler to e.g. g++ 4.5:")
  MESSAGE(" ")
  MESSAGE("       $ sudo apt-get install g++-4.5")
  MESSAGE(" ")
  MESSAGE("    And build using that compiler cmake -DCMAKE_CXX_COMPILER=g++-4.5")
  MESSAGE(" ")
  MESSAGE("    We will now disable all assertions as a work around, by")
  MESSAGE("    building using -DNDEBUG. You will need to define this")
  MESSAGE("    also for programs built using Wt")
  MESSAGE(" ")
  LIST(APPEND P_DEFINITIONS NDEBUG)  
ENDIF(GCC_COMPILER_VERSION MATCHES ".*4\\.4\\.4\\-14ubuntu5.*")

OPTION(ENABLE_GM "Enable GraphicsMagick, for supporting painting to raster images (PNG, GIF, ...) (WRasterImage)" ON)
OPTION(ENABLE_HARU "Enable Haru Free PDF Library, which is used to provide support for painting to PDF (WPdfImage)" ON)
OPTION(ENABLE_EXT "Build Wt Ext library with JavaScript-only widgets (http://extjs.com/)" ON)
OPTION(ENABLE_SQLITE "Build SQLite3 backend for Wt::Dbo" ON)
OPTION(ENABLE_POSTGRES "Build PostgreSQL backend for Wt::Dbo" ON)
OPTION(WT_NO_STD_LOCALE "Build Wt ro run on a system without std::locale support" OFF)
OPTION(WT_NO_STD_WSTRING "Build Wt ro run on a system without std::wstring support" OFF)

INCLUDE(CheckFunctionExists)
INCLUDE(CheckLibraryExists)

IF(DEFINED BOOST_COMPILER OR DEFINED BOOST_VERSION)
  SET(DEFAULT_WT_BOOST_DISCOVERY TRUE)
ELSE(DEFINED BOOST_COMPILER OR DEFINED BOOST_VERSION)
  SET(DEFAULT_WT_BOOST_DISCOVERY FALSE)
ENDIF(DEFINED BOOST_COMPILER OR DEFINED BOOST_VERSION)
# There's no decent boost discovery prior to cmake 2.6
IF(CMAKE_MAJOR_VERSION LESS 2)
  SET(DEFAULT_WT_BOOST_DISCOVERY TRUE)
ELSEIF(CMAKE_MAJOR_VERSION EQUAL 2)
    IF(CMAKE_MINOR_VERSION LESS 6)
      SET(DEFAULT_WT_BOOST_DISCOVERY TRUE)
    ELSEIF(CMAKE_MINOR_VERSION EQUAL 6)
      IF(CMAKE_TINY_VERSION LESS 2)
        # Pau says: 2.6.0 and 2.6.1 are not very good
        SET(DEFAULT_WT_BOOST_DISCOVERY TRUE)
      ENDIF(CMAKE_TINY_VERSION LESS 2)
    ENDIF(CMAKE_MINOR_VERSION LESS 6)
ENDIF(CMAKE_MAJOR_VERSION LESS 2)

SET(WT_BOOST_DISCOVERY ${DEFAULT_WT_BOOST_DISCOVERY} CACHE BOOL "Use Wt's boost discovery method rather than the cmake 2.6+ method")
    
IF(DEBUG)
  SET(WT_DEBUG_ENABLED 1)
ELSE(DEBUG)
  SET(WT_DEBUG_ENABLED 0)
ENDIF(DEBUG)

INCLUDE(FindThreads)


FIND_PACKAGE(Boost 1.53 COMPONENTS chrono exception iostreams locale prg_exec_monitor test_exec_monitor serialization random date_time regex program_options signals system filesystem thread timer unit_test_framework wserialization)

IF(NOT Boost_FOUND)
  MESSAGE(FATAL_ERROR "Could not find a boost installation in " ${BOOST_PREFIX} ".\n\n")
ENDIF(NOT Boost_FOUND)

IF(Boost_THREAD_FOUND)
  IF(MULTI_THREADED)
    MESSAGE("** Enabling multi threading.")
    ADD_DEFINITIONS(-D_REENTRANT -DBOOST_SPIRIT_THREADSAFE)
  ENDIF(MULTI_THREADED)
ELSE(Boost_thread_FOUND)
  MESSAGE(FATAL_ERROR "Could not contiunue compiling if multithreading is OFF.")
ENDIF(Boost_THREAD_FOUND)

INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})

IF(WIN32)
  IF(NOT Boost_USE_STATIC_LIBS)
    ADD_DEFINITIONS(-DBOOST_ALL_DYN_LINK)
  ELSE(NOT Boost_USE_STATIC_LIBS)
    # You could expect that this is the default when BOOST_ALL_DYN_LINK
    # is not set, but this is problematic for cygwin
    ADD_DEFINITIONS(-DBOOST_THREAD_USE_LIB)
  ENDIF(NOT Boost_USE_STATIC_LIBS)
  ADD_DEFINITIONS(
      -D_CRT_SECURE_NO_WARNINGS
#      -Dinline=__inline
      -D_SCL_SECURE_NO_WARNINGS
      -D_LIB
      -D_VISUALC_
      )
ENDIF(WIN32)

INCLUDE(cmake/WtFindFcgi.txt)
INCLUDE(cmake/WtFindZlib.txt)
INCLUDE(cmake/WtFindSsl.txt)
INCLUDE(cmake/WtFindMysqlpp.txt)
INCLUDE(cmake/WtFindPostgresql.txt)
INCLUDE(cmake/WtFindAsciidoc.txt)
INCLUDE(cmake/WtFindHaru.txt)
INCLUDE(cmake/WtFindGm.txt)



IF(WIN32)

  SET(RUNDIR "${PROJECT_BINARY_DIR}/../../var/run/wt" CACHE PATH
    "Default path for wt session management (only used by FCGI connector; not relative to CMAKE_INSTALL_PREFIX)")


  IF(NOT DEFINED CONFIGDIR)
    SET(CONFIGDIR "${PROJECT_BINARY_DIR}/../../witty" CACHE STRING "Path for the configuration files")
  ENDIF(NOT DEFINED CONFIGDIR)

#  SET(USERLIB_PREFIX_DEFAULT "c:/libraries")
  IF(MSVC)
    SET(BUILD_PARALLEL "/MP" CACHE STRING "MSVC option for parallel builds (/MP or /MPx)")
  ENDIF(MSVC)

ELSE(WIN32)

  SET(RUNDIR "/var/run/wt" CACHE PATH
    "Default path for wt session management (only used by FCGI connector; not relative to CMAKE_INSTALL_PREFIX)")

  IF( NOT DEFINED CONFIGDIR )
    IF(CONNECTOR_HTTP)
      SET(CONFIGDIR "${PROJECT_BINARY_DIR}/../witty" CACHE STRING "Path for the configuration files")    
    ELSE(CONNECTOR_HTTP)
      SET(CONFIGDIR "/etc/wt" CACHE STRING "Path for the configuration files")    
    ENDIF(CONNECTOR_HTTP)
  ENDIF( NOT DEFINED CONFIGDIR )

  SET(USERLIB_PREFIX_DEFAULT "/usr")

ENDIF(WIN32)

IF(WIN32)
  SET(BOOST_PREFIX_DEFAULT "c:/Program Files/Boost")
  OPTION(BOOST_DYNAMIC "Link to boost DLLs (OFF means static link)" OFF)
ELSE(WIN32)
  SET(BOOST_PREFIX_DEFAULT ${USERLIB_PREFIX})
ENDIF(WIN32)

SET(FCGI_PREFIX ${USERLIB_PREFIX} CACHE PATH
  "Installation prefix of fcgi library (overrides USERLIB_PREFIX)")
SET(POSTGRES_PREFIX ${USERLIB_PREFIX} CACHE PATH
  "Installation prefix of postgresql library (overrides USERLIB_PREFIX)")
SET(MYSQL_PREFIX ${USERLIB_PREFIX} CACHE PATH
  "Installation prefix of mysql and mysql++ libraries "
  "(overrides USERLIB_PREFIX)")
SET(SQLITE3_PREFIX ${USERLIB_PREFIX} CACHE PATH
  "Installation prefix of sqlite3 library (overrides USERLIB_PREFIX)")
SET(HARU_PREFIX ${USERLIB_PREFIX} CACHE PATH
  "Installation prefix of libharu library (overrides USERLIB_PREFIX)")
SET(SSL_PREFIX ${USERLIB_PREFIX} CACHE PATH
  "Installation prefix of SSL library (overrides USERLIB_PREFIX)")
SET(ZLIB_PREFIX ${USERLIB_PREFIX} CACHE PATH
  "Installation prefix of zlib library (overrides USERLIB_PREFIX)")
SET(GM_PREFIX ${USERLIB_PREFIX} CACHE PATH
  "Installation prefix of GraphicsMgick library (overrides GM_PREFIX)")

OPTION(DEBUG "Support for debugging, must be enabled also in wt_config.xml" OFF)

LIST(APPEND P_DEFINITIONS WT_WITH_OLD_INTERNALPATH_API)  

MARK_AS_ADVANCED( CONFIGDIR )

SET(CONFIGURATION "${CONFIGDIR}/wt_config.xml" CACHE PATH "Path to the wt configuration file")
SET(WTHTTP_CONFIGURATION ${CONFIGDIR}/wthttpd CACHE PATH "Path for the wthttpd configuration file")


SET(WEBUSER apache CACHE STRING "Webserver username (e.g. apache or www)")
SET(WEBGROUP apache CACHE STRING "Webserver groupname (e.g. apache or www or users)")
IF(WIN32)
  SET(CONNECTOR_FCGI FALSE)
  IF(NOT MINGW)
    OPTION(CONNECTOR_ISAPI "Compile in ISAPI connector (libwtisapi) ?" ON)
  ENDIF(NOT MINGW)
ELSE(WIN32)
  OPTION(CONNECTOR_FCGI "Compile in FCGI connector (libwtfcgi) ?" ON)
  SET(CONNECTOR_ISAPI OFF)
ENDIF(WIN32)

OPTION(CONNECTOR_HTTP "Compile in stand-alone httpd connector (libwthttp) ?" ON)

SET(PROJECT_CONNECTOR wthttp CACHE STRING "Connector used for project")

# The WT_ADD_PROJECT function builds a DLL in case of ISAPI, and an executable
# in case of FCGI or HTTPD connectors. It also makes sure that the example
# links to the proper libraries (connector + wt).
MACRO(WT_ADD_PROJECT name)
  SET(${name}_DEFINITIONS_DEBUG "")
  SET(${name}_DEFINITIONS "")
    
  LIST(APPEND ${name}_DEFINITIONS_DEBUG ${P_DEFINITIONS_DEBUG})
  LIST(APPEND ${name}_DEFINITIONS ${P_DEFINITIONS})
  
  IF(MSVC)
    SET(FBCLIENT fbclient_ms)
  ENDIF(MSVC)
  IF(APPLE)
    SET(FBCLIENT Firebird)
  ENDIF(APPLE)
  IF(UNIX)
    SET(FBCLIENT fbclient)
  ENDIF(UNIX)
    
  IF(ENABLE_HARU AND HARU_FOUND)
    SET(HAVE_HARU ON)
    SET(WT_HAS_WPDFIMAGE true)
  ENDIF(ENABLE_HARU AND HARU_FOUND)
    
  IF(ENABLE_GM AND GM_FOUND)
    SET(HAVE_GM ON)
    SET(WT_HAS_WRASTERIMAGE true)
  ENDIF(ENABLE_GM AND GM_FOUND)

    
  IF(NOT Boost_FOUND)
    SET(ERR
        "Could not find a boost installation in " ${BOOST_PREFIX} ".\n\n"
        "There are two methods in Wt to find boost:\n\n"
        "1. Find boost through cmake (recommended)\n"
        "This requires cmake 2.6, and is in "
        "that case the default (unless BOOST_COMPILER or BOOST_VERSION is "
        "defined). This method requires a multi-threaded boost installation.\n"
        "You may need to add your boost version number to "
        "Boost_ADDITIONAL_VERSIONS, and/or set BOOST_PREFIX to the location "
        "where boost is installed.\n\n"
        "2. Use the Wt-proprietary method to find boost.\n"
        "This requires you to define three variables:\n"
        "BOOST_PREFIX: set to the directory where you installed boost\n"
        "BOOST_COMPILER: set to the compiler signature as you find them in "
        "library names (e.g.: gcc42)\n"
        "BOOST_VERSION: set to the boost version, again as you find them in "
        "the library names (e.g.: 1_38)\n\n"
        "Note 1: WT_BOOST_DISCOVERY is the variable that selects the boost "
        "discovery method. When set to false, method 1 is used (default if "
        "cmake version is recent enough and BOOST_COMPILER and BOOST_VERSION "
        "are not defined). When set to true, method 2 is used.\n"
        "Note 2: the code to discover boost is located in cmake/WtFindBoost.txt\n"
        "Note 3: on windows, set BOOST_PREFIX to the full path, eg "
        "c:/Program Files/boost/boost_1_38\n\n"
        "Wt requires the following C++ boost libraries: date_time, regex, program_options, signals, and optionally thread")
    MESSAGE(FATAL_ERROR ${ERR})
  ENDIF(NOT Boost_FOUND)
    
  IF(Boost_THREAD_FOUND)
    IF(MULTI_THREADED)
      MESSAGE("** Enabling multi threading.")
      SET(MULTI_THREADED_BUILD true)
  
      LIST(APPEND ${name}_DEFINITIONS WT_THREADED _REENTRANT BOOST_SPIRIT_THREADSAFE)

    ELSE(MULTI_THREADED)
      MESSAGE("** Disabling multi threading.")
      SET(MULTI_THREADED_BUILD false)

      LIST(APPEND ${name}_DEFINITIONS BOOST_DISABLE_THREADS SQLITE_THREADSAFE=0)
      
    ENDIF(MULTI_THREADED)
  ELSE(Boost_THREAD_FOUND)
    MESSAGE(FATAL_ERROR "Boost multi-threaded library needed!")
  ENDIF(Boost_THREAD_FOUND)
  
  FIND_PACKAGE(Doxygen)
  
  # Boost is used nearly everywhere, so we can put these here
  IF(WIN32)
    IF(BOOST_DYNAMIC)
      LIST(APPEND ${name}_DEFINITIONS BOOST_ALL_DYN_LINK)
    ELSE(BOOST_DYNAMIC)
      # You could expect that this is the default when BOOST_ALL_DYN_LINK
      # is not set, but this is problematic for cygwin
      LIST(APPEND ${name}_DEFINITIONS BOOST_THREAD_USE_LIB)
    ENDIF(BOOST_DYNAMIC)

#    LIST(APPEND ${name}_DEFINITIONS _CRT_SECURE_NO_WARNINGS inline=__inline _SCL_SECURE_NO_WARNINGS)
    LIST(APPEND ${name}_DEFINITIONS _CRT_SECURE_NO_WARNINGS _SCL_SECURE_NO_WARNINGS)
  ENDIF(WIN32)
  
  IF(NOT CMAKE_BUILD_TYPE)
    SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
        "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
        FORCE)
  ENDIF(NOT CMAKE_BUILD_TYPE)
  
  ADD_CUSTOM_TARGET(doc)
  
  IF (DOXYGEN_FOUND)
    ADD_CUSTOM_TARGET(doxygen
      ${DOXYGEN_EXECUTABLE}
      WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
      COMMENT "Doxygen ...")
    ADD_DEPENDENCIES(doc doxygen)
  ENDIF (DOXYGEN_FOUND)
  
  IF(BUILD_TESTS)
    SUBDIRS(test)
  ENDIF(BUILD_TESTS)
  
  #IF(INSTALL_RESOURCES)
  #INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/resources DESTINATION
  #    ${CMAKE_INSTALL_PREFIX}/share/Wt/)
  #ENDIF(INSTALL_RESOURCES)
  
  IF(NOT EXISTS ${DESTDIR}${CONFIGDIR}/wt_config.xml)
    INSTALL(FILES ${PROJECT_BINARY_DIR}/wt_config.xml DESTINATION ${CONFIGDIR})
  ENDIF (NOT EXISTS ${DESTDIR}${CONFIGDIR}/wt_config.xml)    

  FILE(GLOB_RECURSE SOURCE_XML_FILES ${PROJECT_SOURCE_DIR}/messresbundle/*.xml) 

  IF(UNIX)
    INSTALL(FILES ${SOURCE_XML_FILES} DESTINATION /opt/musicRobot PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE WORLD_READ)
  ELSE(UNIX)
    IF(CONNECTOR_HTTP)
      INSTALL(FILES ${SOURCE_XML_FILES} DESTINATION ${DRIVE_LETTER}/opt/musicRobot)
    ELSEIF(CONNECTOR_ISAPI)
    ENDIF(CONNECTOR_HTTP)
  ENDIF(UNIX)
  
  IF(NOT UNIX)
    LINK_DIRECTORIES(
                     ${BOOST_LIB_DIRS}
                     ${PROJECT_SOURCE_DIR}/../wt330/lib
                    )
  ELSE(NOT UNIX)
    LINK_DIRECTORIES(
                     ${BOOST_LIB_DIRS}
                    )
  ENDIF(NOT UNIX)

  IF(PROJECT_CONNECTOR MATCHES "wtisapi")
    SET(MYLIST ${ARGV})
    LIST(INSERT MYLIST 1 SHARED)
    ADD_LIBRARY(${MYLIST})
    SET_TARGET_PROPERTIES(${name}
      PROPERTIES
        LINK_FLAGS
         "/EXPORT:HttpExtensionProc /EXPORT:GetExtensionVersion /EXPORT:TerminateExtension"
    )
  ELSE(PROJECT_CONNECTOR MATCHES "wtisapi")
    ADD_EXECUTABLE(${ARGV})
  ENDIF(PROJECT_CONNECTOR MATCHES "wtisapi")

  IF(MULTI_THREADED_BUILD)
    SET(TLL ${TLL} ${CMAKE_THREAD_LIBS_INIT})
  ENDIF(MULTI_THREADED_BUILD)

  IF(MSVC)
    SET_TARGET_PROPERTIES(${name} PROPERTIES LINK_FLAGS "/SUBSYSTEM:CONSOLE")
  ENDIF(MSVC)  

  IF(NOT HAVE_HARU)
    MESSAGE("** Disabling PDF support (WPdfImage): requires libharu.")
    IF(ENABLE_HARU)
      MESSAGE("   Indicate the location of your haru library using -DHARU_PREFIX=...")
    ENDIF(ENABLE_HARU)
  ENDIF(NOT HAVE_HARU)
  
  IF(HAVE_GM)
    LIST(APPEND ${name}_DEFINITIONS HAVE_RASTER_IMAGE)
  ELSE(HAVE_GM)
    MESSAGE("** Disabling raster image support (WRasterImage): requires graphicsmagick.")
    IF(ENABLE_GM)
      MESSAGE("   Indicate the location of your graphicsmagick library using -DGM_PREFIX=...")
    ENDIF(ENABLE_GM)
  ENDIF(HAVE_GM)
  
  IF(HAVE_HARU)
    SET(BOOST_WT_LIBRARIES ${BOOST_WT_LIBRARIES} ${BOOST_FS_LIB})
  ENDIF(HAVE_HARU)
  
  CHECK_FUNCTION_EXISTS(crypt CRYPT_EXISTS)
  IF(NOT CRYPT_EXISTS)
    CHECK_LIBRARY_EXISTS(crypt crypt "" CRYPT_LIB_EXISTS)
    IF(CRYPT_LIB_EXISTS)
      SET(CMAKE_REQUIRED_LIBRARIES "crypt")
      CHECK_FUNCTION_EXISTS(crypt CRYPT_EXISTS)
    ENDIF(CRYPT_LIB_EXISTS)
  ENDIF(NOT CRYPT_EXISTS)
  
  IF(CRYPT_LIB_EXISTS)
    SET(PRJ_CRYPT_LIB crypt)
  ENDIF(CRYPT_LIB_EXISTS)

  IF(NOT UNIX)
    IF(MSVC)
      SET_TARGET_PROPERTIES(${name} PROPERTIES COMPILE_FLAGS "/W3 /Wp64 /wd4251 /wd4275")
    ENDIF(MSVC)
    IF(DEBUG)
        SET(TLL ${TLL} ${PROJECT_CONNECTOR} wtd ${Boost_LIBRARIES} ${PRJ_CRYPT_LIB} ws2_32 iphlpapi wldap32 Advapi32)
	ELSE(DEBUG)
		SET(TLL ${TLL} ${PROJECT_CONNECTOR} wt ${Boost_LIBRARIES} ${PRJ_CRYPT_LIB} ws2_32 iphlpapi wldap32 Advapi32)
    ENDIF(DEBUG)
              
  ELSE(NOT UNIX)
    IF(DEBUG)
        SET(TLL ${TLL} ${PROJECT_CONNECTOR} wtd ${Boost_LIBRARIES} ${PRJ_CRYPT_LIB} dl)
    ELSE(DEBUG)
        SET(TLL ${TLL} ${PROJECT_CONNECTOR} wt ${Boost_LIBRARIES} ${PRJ_CRYPT_LIB} dl)
    ENDIF(DEBUG)
  ENDIF(NOT UNIX)

  TARGET_LINK_LIBRARIES(${name} ${TLL})        
  
  IF(NOT UNIX)
      INCLUDE_DIRECTORIES(${BOOST_INCLUDE_DIRS}
                          ${PROJECT_SOURCE_DIR}/include
                          ${PROJECT_SOURCE_DIR}/../wt330/src/web
                          ${PROJECT_SOURCE_DIR}/../wt330/src
                          ${PROJECT_SOURCE_DIR}/../wt330/build
                          ${PROJECT_SOURCE_DIR}/../wt330/src/Wt/Dbo/backend/amalgamation # for sqlite3.h
                   )
  ELSE(NOT UNIX)  
      INCLUDE_DIRECTORIES(/usr/include
                          ${BOOST_INCLUDE_DIRS}
                          ${PROJECT_SOURCE_DIR}/include
                          ${PROJECT_SOURCE_DIR}/../wt330/src/web
                          ${PROJECT_SOURCE_DIR}/../wt330/src
                          ${PROJECT_SOURCE_DIR}/../wt330/build
                          ${PROJECT_SOURCE_DIR}/../wt330/src/Wt/Dbo/backend/amalgamation # for sqlite3.h
                   )
  ENDIF(NOT UNIX)

  IF(NOT UNIX)
    LIST(APPEND ${name}_DEFINITIONS_DEBUG _DEBUG __WXDEBUG__)
    LIST(APPEND ${name}_DEFINITIONS CODEGEN_EXPORTS _LIB U_STATIC_IMPLEMENTATION MEDIAINFO_STATIC MEDIAINFO_TRACE_NO MEDIANFO_EVENTS_NO MEDIAINFO_DEMUX_NO MEDIAINFO_DVDIF_ANALYZE_NO MEDIAINFO_MPEGTS_DUPLICATE_NO TAGLIB_STATIC POCO_STATIC _XOPEN_SOURCE=500 _THREAD_SAFE _FILE_OFFSET_BITS=64 _LARGEFILE64_SOURCE POCO_HAVE_FD_EPOLL _UNICODE UNICODE CURL_LDAP_WIN CURL_STATICLIB _CONSOLE XTRACT_FFT _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE NeedFunctionPrototypes _VISUALC_ IBPP_WINDOWS __WXMSW__ _GNU_SOURCE=1 _REENTRANT _WINDOWS XML_STATIC XML_NS XML_DTD HAVE_EXPAT_CONFIG_H)        
    SET_PROPERTY(TARGET ${name} APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG ${${name}_DEFINITIONS_DEBUG})
    SET_PROPERTY(TARGET ${name} APPEND PROPERTY COMPILE_DEFINITIONS ${${name}_DEFINITIONS})
    SET_PROPERTY(TARGET ${name} APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE NDEBUG BOOST_UBLAS_NDEBUG)
  ELSE(NOT UNIX)
    LIST(APPEND ${name}_DEFINITIONS_DEBUG _DEBUG CURLDEBUG) # __WXDEBUG__
    LIST(APPEND ${name}_DEFINITIONS CODEGEN_EXPORTS U_STATIC_IMPLEMENTATION MEDIAINFO_STATIC TAGLIB_STATIC POCO_STATIC _XOPEN_SOURCE=500 _THREAD_SAFE _FILE_OFFSET_BITS=64 _LARGEFILE64_SOURCE POCO_HAVE_FD_EPOLL _UNICODE UNICODE _CONSOLE XTRACT_FFT _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE _GNU_SOURCE=1 _REENTRANT)        
    SET_PROPERTY(TARGET ${name} APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG ${${name}_DEFINITIONS_DEBUG})
    SET_PROPERTY(TARGET ${name} APPEND PROPERTY COMPILE_DEFINITIONS ${${name}_DEFINITIONS})
    SET_PROPERTY(TARGET ${name} APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE NDEBUG BOOST_UBLAS_NDEBUG)
    IF(APPLE)
      SET_PROPERTY(TARGET ${name} APPEND PROPERTY COMPILE_DEFINITIONS IBPP_APPLE)
    ELSEIF(UNIX)
      SET_PROPERTY(TARGET ${name} APPEND PROPERTY COMPILE_DEFINITIONS IBPP_LINUX)
    ENDIF(APPLE)      
  ENDIF(NOT UNIX)
                          
  IF(UNIX)
    IF(CONNECTOR_HTTP)
      #SET_TARGET_PROPERTIES(${name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/../var/www/wt)
      INSTALL(TARGETS ${name} RUNTIME DESTINATION ${PROJECT_SOURCE_DIR}/../var/www/wt PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ)
    ELSE(CONNECTOR_HTTP)
      IF(DEBUG)
        INSTALL(TARGETS ${name} RUNTIME DESTINATION /var/www/wt PERMISSIONS WORLD_READ WORLD_WRITE WORLD_EXECUTE)
      ELSE(DEBUG)
        INSTALL(TARGETS ${name} RUNTIME DESTINATION /var/www/wt PERMISSIONS WORLD_EXECUTE)
      ENDIF(DEBUG)        
    ENDIF(CONNECTOR_HTTP)
  ENDIF(UNIX)
ENDMACRO(WT_ADD_PROJECT)


# SET(WCONFIG_H_PATH ${PROJECT_SOURCE_DIR}/../wt/build/Wt/WConfig.h)

CONFIGURE_FILE(
  ${PROJECT_SOURCE_DIR}/wt_config.xml.in
  ${PROJECT_BINARY_DIR}/wt_config.xml
)

FILE(GLOB_RECURSE SOURCE_CPP_FILES ${PROJECT_SOURCE_DIR}/source/*.cpp  ${PROJECT_SOURCE_DIR}/source/*.cxx ${PROJECT_SOURCE_DIR}/source/*.c ${PROJECT_SOURCE_DIR}/include/*.h  ${PROJECT_SOURCE_DIR}/include/*.hpp) 

WT_ADD_PROJECT(SyNaTPG.wt
  ${SOURCE_CPP_FILES}
)
 
