Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
189 changes: 189 additions & 0 deletions asio/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
# Minimum supported CMake version
cmake_minimum_required(VERSION 3.1.2 FATAL_ERROR)

if(CONAN_COMPILER)

# ========================================
project(asio VERSION ${CONAN_PACKAGE_VERSION} LANGUAGES CXX)
# ========================================

include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup(TARGETS) # this set CONAN_TARGETS

else()

# use ccache and clang++ if found
find_program(CCACHE_EXECUTABLE "ccache" HINTS /opt/local/bin)
if(CCACHE_EXECUTABLE AND NOT CMAKE_TOOLCHAIN_FILE)
message(STATUS "use ccache")
find_program(CLANGXX_EXECUTABLE "clang++" HINTS /opt/local/bin)
if(CLANGXX_EXECUTABLE)
set(GXX_EXECUTABLE ${CLANGXX_EXECUTABLE})
else()
find_program(GXX_EXECUTABLE "g++" HINTS /opt/local/bin)
set(CMAKE_COMPILER_IS_GNUCXX yes)
endif()
if(GXX_EXECUTABLE)
set(CMAKE_CXX_COMPILER "${CCACHE_EXECUTABLE}" CACHE PATH "ccache" FORCE)
set(CMAKE_CXX_COMPILER_ARG1 ${GXX_EXECUTABLE} CACHE PATH "the real c++" FORCE)
endif()
endif()

# ========================================
project(asio VERSION 1.11.0 LANGUAGES CXX)
# ========================================

endif()


# ========================================
# ASIO Options
# ========================================
option(ASIO_NO_DEPRECATED "Build asio without deprecated interfaces" OFF)
option(ASIO_STANDALONE "Build asio without boost" ON)
option(ASIO_BUILD_TESTS "Build asio unittest too" OFF)
option(ASIO_BUILD_EXAMPLES "Build asio examples too" OFF)
option(ASIO_ENABLE_HANDLER_TRACKING "enable handler tracking" ON)
option(ASIO_DISABLE_KQUEUE "disable kqueue" OFF)
option(ASIO_DISABLE_EPOLL "disable epoll" OFF)
option(ASIO_USE_CLANG_TIDY "use clang-tidy if found" OFF)


#
# Where to put all the RUNTIME targets when built. This variable is used to
# initialize the RUNTIME_OUTPUT_DIRECTORY property on all the targets.
#
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)


if(NOT CONAN_COMPILER AND WIN32)
add_definitions(-D_WIN32_WINNT=0x0501 -D__USE_W32_SOCKETS
-DASIO_HAS_VARIADIC_TEMPLATES -DASIO_DISABLE_CONSTEXPR)
set(EXTRA_LIBS wsock32 ws2_32)
else()
set(EXTRA_LIBS ${CONAN_TARGETS})
endif()


if(NOT CONAN_COMPILER AND ${CMAKE_HOST_SYSTEM_NAME} MATCHES "MINGW.*")
add_definitions(-D_WIN32_WINNT=0x0501 -D__USE_W32_SOCKETS)
endif()

if (ASIO_ENABLE_HANDLER_TRACKING)
message(STATUS "enable handler tracking")
add_definitions(-DASIO_ENABLE_HANDLER_TRACKING)
endif()

if (ASIO_DISABLE_KQUEUE)
message(STATUS "disble queue")
add_definitions(-DASIO_DISABLE_KQUEUE)
endif()

if (ASIO_DISABLE_EPOLL)
message(STATUS "disable epoll")
add_definitions(-DASIO_DISABLE_EPOLL)
endif()

if (ASIO_USE_CLANG_TIDY)
message(STATUS "use clang-tidy")
find_program(CMAKE_CXX_CLANG_TIDY "clang-tidy" HINTS /opt/local/bin)
endif()

if(NOT CONAN_COMPILER)
if(CMAKE_COMPILER_IS_GNUCXX OR __COMPILER_CLANG)
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wextra)
endif()


if(NOT ASIO_STANDALONE)
#######################################################################
# use boost if found
option(Boost_USE_MULTITHREADED "Set to OFF to use the non-multithreaded" ON)
option(Boost_DEBUG "Set to ON to enable debug output from FindBoost." OFF)
option(Boost_DETAILED_FAILURE_MSG "Set to ON to get detailed information" ON)
# Set Boost_NO_BOOST_CMAKE to ON to disable the search for boost-cmake.
set(Boost_NO_BOOST_CMAKE ON)
set(BOOST_ROOT "/opt/local" CACHE FILEPATH "path to the boost lib")
set(Boost_USE_STATIC_LIBS OFF)
if(WIN32)
set(Boost_USE_STATIC_RUNTIME OFF)
endif()
find_package(Boost 1.65 COMPONENTS atomic chrono coroutine context date_time
thread system)
#######################################################################

if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})
add_definitions(-DBOOST_ALL_NO_LIB=1
-DBOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
###TBD### -DASIO_HAS_BOOST_DATE_TIME=1
)
set(EXTRA_LIBS ${EXTRA_LIBS} ${Boost_LIBRARIES} )
endif()
#######################################################################
endif()


#######################################################################
# use openssl if found
set(OpenSSL_ROOT_DIR "/opt/local" CACHE FILEPATH "path to the openssl lib")
find_package(OpenSSL QUIET NO_MODULE HINTS ${OpenSSL_ROOT_DIR})
#######################################################################

if(OpenSSL_FOUND)
set(EXTRA_LIBS ${EXTRA_LIBS} ${openSSL_LIBRARIES})
message(STATUS "HAVE_OPENSSL")
add_definitions(-DHAVE_OPENSSL)
include_directories(BEFORE ${openSSL_INCLUDE_DIR})
else()
find_library(OpenSSL_LIBRARY ssl HINTS ${OpenSSL_ROOT_DIR}/lib )
find_library(CRYPTO_LIBRARY crypto HINTS ${OpenSSL_ROOT_DIR}/lib )
if(OpenSSL_LIBRARY AND CRYPTO_LIBRARY )
set(OpenSSL_FOUND ON)
message(STATUS "USE CRYPTO_LIBRARY")
add_definitions(-DHAVE_OPENSSL)
set(EXTRA_LIBS ${EXTRA_LIBS} ${OpenSSL_LIBRARY} ${CRYPTO_LIBRARY})
include_directories(BEFORE ${OpenSSL_ROOT_DIR}/include)
endif()
endif()
#######################################################################
else()
message(STATUS "ASIO USE CONAN_TARGETS")
add_definitions(-DHAVE_OPENSSL)
endif()


# Installation configuration
include(GNUInstallDirs)
set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/asio)

# Interface library
add_subdirectory(include)


if($ENV{CONAN_RUN_TESTS})
set(ASIO_BUILD_TESTS ON CACHE BOOL "" FORCE)
message(STATUS "ASIO CONAN_RUN_TESTS")
endif()

if(ASIO_BUILD_EXAMPLES OR ASIO_BUILD_TESTS)
# enable ctest
enable_testing()

# Sources: examples, tests
add_subdirectory(src)
endif()


# Installation
configure_file(asio-config-version.cmake.in asio-config-version.cmake @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/asio-config-version.cmake
DESTINATION ${ConfigPackageLocation})
install(EXPORT asio-targets
DESTINATION ${ConfigPackageLocation}
NAMESPACE asio::)
install(FILES asio-config.cmake DESTINATION ${ConfigPackageLocation})

11 changes: 11 additions & 0 deletions asio/asio-config-version.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
set(PACKAGE_VERSION "@asio_VERSION@")

# Check whether the requested PACKAGE_FIND_VERSION is compatible
if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
set(PACKAGE_VERSION_COMPATIBLE TRUE)
if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()
1 change: 1 addition & 0 deletions asio/asio-config.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
include(${CMAKE_CURRENT_LIST_DIR}/asio-targets.cmake)
Loading