frnetlib/CMakeLists.txt
Cloaked9000 70779fbe9c Added SocketReactor & fixes
Sockets will immediately return fr::Socket::Status::Disconnected if an attempt to send/receive data is made whilst the connection is closed.

Added SocketReactor, which is effectively a little wrapper around fr::SocketSelector, but can automatically call a callback for a socket when data is received on it.
2016-12-20 11:33:31 +00:00

80 lines
2.7 KiB
CMake

cmake_minimum_required(VERSION 3.5)
project(frnetlib)
#Set module path
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules)
#User options
option(USE_SSL "Use SSL" ON)
set(FRNETLIB_BUILD_SHARED_LIBS true CACHE BOOL "Build shared library.")
if(USE_SSL)
FIND_PACKAGE(MBEDTLS)
INCLUDE_DIRECTORIES(${MBEDTLS_INCLUDE_DIR})
add_definitions(-DSSL_ENABLED)
endif()
set( INCLUDE_PATH "${PROJECT_SOURCE_DIR}/include" )
set( SOURCE_PATH "${PROJECT_SOURCE_DIR}/src" )
set(SOURCE_FILES main.cpp src/TcpSocket.cpp include/frnetlib/TcpSocket.h src/TcpListener.cpp include/frnetlib/TcpListener.h src/Socket.cpp include/frnetlib/Socket.h src/Packet.cpp include/frnetlib/Packet.h include/frnetlib/NetworkEncoding.h src/SocketSelector.cpp include/frnetlib/SocketSelector.h src/HttpSocket.cpp include/frnetlib/HttpSocket.h src/HttpRequest.cpp include/frnetlib/HttpRequest.h src/HttpResponse.cpp include/frnetlib/HttpResponse.h src/Http.cpp include/frnetlib/Http.h src/SSLSocket.cpp include/frnetlib/SSLSocket.h src/SSLListener.cpp include/frnetlib/SSLListener.h include/frnetlib/SSLContext.h src/SocketReactor.cpp include/frnetlib/SocketReactor.h)
include_directories(include)
# Set the library output directory
set( LIBRARY_OUTPUT_PATH "${PROJECT_BINARY_DIR}/lib" )
# Add the library.
if( FRNETLIB_BUILD_SHARED_LIBS )
add_library( frnetlib SHARED ${SOURCE_FILES} )
set_target_properties( frnetlib PROPERTIES DEBUG_POSTFIX -d )
else()
add_definitions( -DFRNETLIB_STATIC )
add_library( frnetlib ${SOURCE_FILES} )
set_target_properties( frnetlib PROPERTIES DEBUG_POSTFIX -s-d )
set_target_properties( frnetlib PROPERTIES RELEASE_POSTFIX -s )
set_target_properties( frnetlib PROPERTIES MINSIZEREL_POSTFIX -s )
endif()
# Tell the compiler to export when necessary.
set_target_properties( frnetlib PROPERTIES DEFINE_SYMBOL FRNETLIB_EXPORTS )
if( WIN32 )
set( SHARE_PATH "." )
set( LIB_PATH "lib" )
elseif(APPLE)
set( SHARE_PATH "${CMAKE_INSTALL_PREFIX}/share/FRNETLIB" )
set( LIB_PATH "lib" )
else()
set( SHARE_PATH "${CMAKE_INSTALL_PREFIX}/share/FRNETLIB" )
if( LIB_SUFFIX )
set( LIB_PATH "lib${LIB_SUFFIX}" )
else()
set( LIB_PATH "lib" )
endif()
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -m64 -fPIC")
if(USE_SSL)
if( WIN32 )
TARGET_LINK_LIBRARIES(frnetlib ${MBEDTLS_LIBRARIES} -lws2_32)
else()
TARGET_LINK_LIBRARIES(frnetlib ${MBEDTLS_LIBRARIES})
endif()
endif()
install(
TARGETS frnetlib
RUNTIME DESTINATION bin COMPONENT bin
LIBRARY DESTINATION "${LIB_PATH}" COMPONENT bin
ARCHIVE DESTINATION "${LIB_PATH}" COMPONENT dev
)
install(
DIRECTORY include
DESTINATION .
)