* Migrate the project from C++14 to C++11. All tests passed. * Remove CONSTEXPR_SPECIFIER macro cause fall back to const in c++11. * Remove C++14 code in test/main.cpp Change sample code from C++14 to C++11 in README.md * Fixed warnings in old-version gcc since C++11 doesn't support empty braced initialization well. * Fixed warnings in old-version gcc since C++11 doesn't support empty braced initialization well. * renaming * fixed conan cpp * fixed appveyor configuration * skip tests from libuv * Add line-feed to tcp.hpp:21
153 lines
3.8 KiB
CMake
153 lines
3.8 KiB
CMake
#
|
|
# uvw
|
|
#
|
|
|
|
cmake_minimum_required(VERSION 3.2)
|
|
|
|
#
|
|
# Building in-tree is not allowed (we take care of your craziness).
|
|
#
|
|
|
|
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
|
|
message(FATAL_ERROR "Prevented in-tree built. Please create a build directory outside of the source code and call cmake from there. Thank you.")
|
|
endif()
|
|
|
|
#
|
|
# Project configuration
|
|
#
|
|
|
|
project(uvw VERSION 1.11.3)
|
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
set(CMAKE_BUILD_TYPE Debug)
|
|
endif()
|
|
|
|
set(PROJECT_AUTHOR "Michele Caini")
|
|
set(PROJECT_AUTHOR_EMAIL "michele.caini@gmail.com")
|
|
|
|
message("*")
|
|
message("* ${PROJECT_NAME} v${PROJECT_VERSION} (${CMAKE_BUILD_TYPE})")
|
|
message("* Copyright (c) 2016-2018 ${PROJECT_AUTHOR} <${PROJECT_AUTHOR_EMAIL}>")
|
|
message("*")
|
|
|
|
set(CMAKE_CXX_STANDARD 11)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
if(NOT MSVC)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
|
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g -DDEBUG")
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Os -DRELEASE")
|
|
endif()
|
|
|
|
#
|
|
# CMake configuration
|
|
#
|
|
|
|
set(PROJECT_CMAKE_IN ${uvw_SOURCE_DIR}/cmake/in)
|
|
set(PROJECT_DEPS_DIR ${uvw_SOURCE_DIR}/deps)
|
|
set(PROJECT_SRC_DIR ${uvw_SOURCE_DIR}/src)
|
|
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY bin)
|
|
|
|
#
|
|
# Referenced packages
|
|
#
|
|
|
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
|
|
include(FindThreads)
|
|
find_package(Doxygen 1.8)
|
|
|
|
#
|
|
# Referenced directories and targets
|
|
#
|
|
|
|
if(DOXYGEN_FOUND)
|
|
add_subdirectory(docs)
|
|
endif()
|
|
|
|
if(BUILD_TESTING)
|
|
set(BUILD_TESTING OFF)
|
|
|
|
set(GOOGLETEST_DEPS_DIR ${PROJECT_DEPS_DIR}/googletest)
|
|
set(LIBUV_DEPS_DIR ${PROJECT_DEPS_DIR}/libuv)
|
|
|
|
configure_file(${PROJECT_CMAKE_IN}/deps.in ${PROJECT_DEPS_DIR}/CMakeLists.txt)
|
|
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . WORKING_DIRECTORY ${PROJECT_DEPS_DIR})
|
|
execute_process(COMMAND ${CMAKE_COMMAND} --build . WORKING_DIRECTORY ${PROJECT_DEPS_DIR})
|
|
|
|
# gtest, gtest_main, gmock and gmock_main targets are available from now on
|
|
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
|
add_subdirectory(${GOOGLETEST_DEPS_DIR})
|
|
|
|
# uv and uv_a targets are available from now on
|
|
add_subdirectory(${LIBUV_DEPS_DIR})
|
|
include_directories(${LIBUV_DEPS_DIR}/include)
|
|
|
|
set(BUILD_TESTING ON)
|
|
enable_testing()
|
|
|
|
add_subdirectory(test)
|
|
endif()
|
|
|
|
#
|
|
# Keep your stuff and go further away, foolish.
|
|
#
|
|
|
|
set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
|
|
set(CPACK_PACKAGE_VENDOR ${PROJECT_AUTHOR})
|
|
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
|
|
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
|
|
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
|
|
set(CPACK_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH})
|
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_NAME})
|
|
set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION})
|
|
set(CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME}-src)
|
|
set(CPACK_RESOURCE_FILE_LICENSE ${uvw_SOURCE_DIR}/LICENSE)
|
|
set(CPACK_RESOURCE_FILE_README ${uvw_SOURCE_DIR}/README.md)
|
|
set(CPACK_GENERATOR TGZ)
|
|
set(CPACK_SOURCE_GENERATOR TGZ)
|
|
set(CPACK_PACKAGING_INSTALL_DIRECTORY "uvw-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}")
|
|
|
|
include(CPack)
|
|
|
|
#
|
|
# Install headers
|
|
#
|
|
|
|
INCLUDE(GNUInstallDirs)
|
|
|
|
IF(NOT DEFINED INCLUDE_INSTALL_DIR)
|
|
SET(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}")
|
|
ENDIF()
|
|
|
|
file(GLOB HEADERS src/uvw/*.hpp)
|
|
|
|
install(
|
|
FILES ${HEADERS}
|
|
COMPONENT ${PROJECT_NAME}
|
|
DESTINATION ${INCLUDE_INSTALL_DIR}/uvw
|
|
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
|
|
)
|
|
|
|
install(
|
|
FILES src/uvw.hpp
|
|
COMPONENT ${PROJECT_NAME}
|
|
DESTINATION ${INCLUDE_INSTALL_DIR}
|
|
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
|
|
)
|
|
|
|
#
|
|
# AOB
|
|
#
|
|
|
|
add_custom_target(
|
|
uvw_aob
|
|
SOURCES
|
|
appveyor.yml
|
|
AUTHORS
|
|
LICENSE
|
|
README.md
|
|
.travis.yml
|
|
)
|