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
66 changes: 58 additions & 8 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,18 @@
# Copyright (c) 2016-2020 Alexey Gruzdev
#

cmake_minimum_required (VERSION 3.8)
cmake_minimum_required (VERSION 3.15)

if(NOT YATO_NO_PROJECT_FOLDERS)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
endif()

set(YATO_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})

project(Yato)
project(Yato VERSION 1.2.0 LANGUAGES CXX)

include(GNUInstallDirs)
include(CMakePackageConfigHelpers)

#==========================================
# Output
Expand Down Expand Up @@ -48,11 +51,6 @@ if(MSVC)
list(APPEND yato_extra_sources ${YATO_SOURCE_DIR}/extras/yato.natvis)
endif()

add_custom_target(Yato SOURCES ${yato_sources}
${yato_extra_sources}
)
set_property(TARGET Yato PROPERTY FOLDER "Modules")

#==========================================
# Targets

Expand All @@ -78,15 +76,67 @@ if(YATO_BUILD_ACTORS)
list(APPEND YATO_INCLUDE_DIRS "${YATO_SOURCE_DIR}/modules/actors")
endif()


add_library(Yato INTERFACE)

set_property(TARGET Yato PROPERTY FOLDER "Modules")

target_sources(Yato INTERFACE
FILE_SET HEADERS
BASE_DIRS ${YATO_SOURCE_DIR}/include
FILES ${yato_sources}
)

target_include_directories(Yato INTERFACE
$<BUILD_INTERFACE:${YATO_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)

#==========================================
# Installation

# Generate and install CMake config files.
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/YatoConfigVersion.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)


configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/YatoConfig.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/YatoConfig.cmake"
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Yato
)

install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/YatoConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/YatoConfigVersion.cmake"
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Yato
)

# Install header-only library.
install(TARGETS Yato
EXPORT YatoTargets
FILE_SET HEADERS
)

install(EXPORT YatoTargets
FILE YatoTargets.cmake
NAMESPACE Yato::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Yato
)

#==========================================
# Tests

option(YATO_BUILD_TESTS "Build unit tests" ON)
if(YATO_BUILD_TESTS)
enable_testing()
add_subdirectory(./tests)
endif()

option(YATO_BUILD_PERFORMANCE_TESTS "Buidl performance tests" OFF)
option(YATO_BUILD_PERFORMANCE_TESTS "Build performance tests" OFF)
if(YATO_BUILD_PERFORMANCE_TESTS)
add_subdirectory(./perf_tests)
endif()
Expand Down
3 changes: 3 additions & 0 deletions cmake/YatoConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
@PACKAGE_INIT@

include("${CMAKE_CURRENT_LIST_DIR}/YatoTargets.cmake")
28 changes: 11 additions & 17 deletions cmake/dependency.gtest.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,24 @@
# Google test dependency
# https://github.com/google/googletest
#
# Output variables:
# GTEST_INCLUDE_DIR - includes
# GTEST_LIBRARY_DIR - link directories
# GTEST_LIBRARIES - link targets
# GMOCK_INCLUDE_DIR - includes


include(${YATO_SOURCE_DIR}/cmake/dependency.common.functions.cmake)
# Targets:
# gtest and gtest_main

macro(_gtest_fix_definitions _TARGET_NAME_)
if(TARGET ${_TARGET_NAME_})
target_compile_definitions(${_TARGET_NAME_} PRIVATE GTEST_LANG_CXX11=1 GTEST_HAS_TR1_TUPLE=0)
endif()
endmacro(_gtest_fix_definitions)

if (NOT TARGET gtest)
find_package(GTest REQUIRED CONFIG)
add_library(gtest ALIAS GTest::gtest)
add_library(gtest_main ALIAS GTest::gtest_main)
return()
endif()

include(${YATO_SOURCE_DIR}/cmake/dependency.common.functions.cmake)

dependency_find_or_download(
NAME GTEST
VERBOSE_NAME "GoogleTest"
Expand Down Expand Up @@ -50,12 +53,3 @@ if(NOT TARGET gtest)
set_property(TARGET gtest PROPERTY FOLDER "Dependencies")
set_property(TARGET gtest_main PROPERTY FOLDER "Dependencies")
endif()

set(GTEST_INCLUDE_DIR ${GTEST_FOUND_ROOT}/googletest/include CACHE INTERNAL "")
set(GMOCK_INCLUDE_DIR ${GTEST_FOUND_ROOT}/googlemock/include CACHE INTERNAL "")
set(GTEST_LIBRARY_DIR "" CACHE INTERNAL "")
list(APPEND GTEST_LIBRARIES gtest)
list(APPEND GTEST_LIBRARIES gtest_main)
set(GTEST_LIBRARIES ${GTEST_LIBRARIES} CACHE INTERNAL "")


8 changes: 3 additions & 5 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ include(${YATO_SOURCE_DIR}/cmake/dependency.gtest.cmake)
#==========================================
# Sources

include_directories(${GTEST_INCLUDE_DIR})
include_directories(${YATO_INCLUDE_DIRS})

file(GLOB all_tests "${CMAKE_CURRENT_SOURCE_DIR}/source/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/source/*.h")
Expand All @@ -33,9 +32,9 @@ source_group(TREE "${YATO_SOURCE_DIR}" FILES ${all_sources})
# Targets

add_definitions(-DYATO_ENABLE_TESTED_ASSERTIONS)
link_directories(${GTEST_LIBRARY_DIR})

add_executable(YatoTests ${all_sources})
target_link_libraries(YatoTests PRIVATE gtest_main)

set_property(TARGET YatoTests PROPERTY FOLDER "Tests")

Expand All @@ -45,6 +44,5 @@ _gtest_fix_definitions(YatoTests)
foreach(lib ${Yato_TEST_LIBS})
target_link_libraries(YatoTests ${lib})
endforeach()
foreach(lib ${GTEST_LIBRARIES})
target_link_libraries(YatoTests ${lib})
endforeach()

add_test(NAME "unit-tests" COMMAND "./YatoTests")