cmake_minimum_required ( VERSION 2.8 )
project ( i2pd )

# Default build is Debug
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
#set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall")

set ( SRC_DIR ".." )
set ( INC_DIR ".." )


add_definitions ( "-std=c++0x -Wall" )

set ( SOURCES
		CryptoConst.cpp	
        AddressBook.cpp
        Garlic.cpp
        HTTPServer.cpp
        i2p.cpp
        Identity.cpp
        Log.cpp
        NTCPSession.cpp
        RouterContext.cpp
        SSU.cpp
	SSUData.cpp
        TransitTunnel.cpp
        Tunnel.cpp
        TunnelGateway.cpp
        UPnP.cpp
        base64.cpp
        HTTPProxy.cpp
        I2NPProtocol.cpp
        LeaseSet.cpp
        NetDb.cpp
        Reseed.cpp
        RouterInfo.cpp
        Streaming.cpp
        Transports.cpp
        TunnelEndpoint.cpp
        TunnelPool.cpp
        util.cpp
        aes.cpp
	Daemon.cpp
    SOCKS.cpp
	I2PTunnel.cpp
)

set ( HEADERS
		CryptoConst.h
        AddressBook.h
        Garlic.h
        HTTPServer.h
        Identity.h
        Log.h
        NTCPSession.h
        RouterContext.h
        SSU.h
	SSUData.h
        TransitTunnel.h
        Tunnel.h
        TunnelGateway.h
        UPnP.h
        base64.h
        HTTPProxy.h
        I2NPProtocol.h
        LeaseSet.h
        NetDb.h
        Reseed.h
        RouterInfo.h
        Streaming.h
        Transports.h
        TunnelEndpoint.h
        TunnelPool.h
        util.h
        aes.h
	Daemon.h
    SOCKS.h
	I2PTunnel.h
  version.h
	Signature.h
)

if (WIN32)
	list (APPEND SOURCES DeamonWin32.cpp)
else ()
	list (APPEND SOURCES DaemonLinux.cpp)
endif ()



source_group ("Header Files" FILES ${HEADERS})
source_group ("Source Files" FILES ${SOURCES})

set ( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules" )

find_package ( Threads REQUIRED )

find_package ( Boost COMPONENTS system filesystem regex program_options REQUIRED )

find_package ( CryptoPP REQUIRED )

# Check for libraries
if(NOT DEFINED Boost_INCLUDE_DIRS)
    message(FATAL_ERROR "Boost is not found, or your boost version was bellow 1.46. Please download Boost!")
    return()
endif()

if(NOT DEFINED CRYPTO++_INCLUDE_DIR)
    message(FATAL_ERROR "Could not find Crypto++. Please download and install it first!")
    return()
endif()


# End checks


include_directories ( ${Boost_INCLUDE_DIRS} ${CRYPTO++_INCLUDE_DIR})


unset ( TMP )
foreach ( src ${SOURCES} )
        list ( APPEND TMP "${SRC_DIR}/${src}" )
endforeach ()
set ( SOURCES ${TMP} )

unset ( TMP )
foreach ( hdr ${HEADERS} )
        list ( APPEND TMP "${INC_DIR}/${hdr}" )
endforeach ()
set ( HEADERS ${TMP} )


add_executable ( ${PROJECT_NAME} WIN32 ${HEADERS} ${SOURCES} )

target_link_libraries( ${PROJECT_NAME} ${Boost_LIBRARIES} ${CRYPTO++_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} )