1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
# --------------------------------------------------------------------------------------------------
# Copyright (c) 2006-2022, Knut Reinert & Freie Universität Berlin
# Copyright (c) 2016-2022, Knut Reinert & MPI für molekulare Genetik
# This file may be used, modified and/or redistributed under the terms of the 3-clause BSD-License
# shipped with this file and also available at: https://github.com/seqan/raptor/blob/main/LICENSE.md
# --------------------------------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.15)
# Exposes the google-test targets `gtest` and `gtest_main`.
macro (raptor_require_test)
enable_testing ()
set (SEQAN3_TEST_CLONE_DIR "${PROJECT_BINARY_DIR}/vendor/googletest")
# needed for add_library (seqan3::test::* INTERFACE IMPORTED)
# see cmake bug https://gitlab.kitware.com/cmake/cmake/issues/15052
file (MAKE_DIRECTORY ${SEQAN3_TEST_CLONE_DIR}/googletest/include/)
set (gtest_project_args ${SEQAN3_EXTERNAL_PROJECT_CMAKE_ARGS})
list (APPEND gtest_project_args "-DBUILD_GMOCK=0")
# force that libraries are installed to `lib/`, because GNUInstallDirs might install it into `lib64/`
list (APPEND gtest_project_args "-DCMAKE_INSTALL_LIBDIR=${PROJECT_BINARY_DIR}/lib/")
# google sets CMAKE_DEBUG_POSTFIX = "d"
set (gtest_main_path
"${PROJECT_BINARY_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX}")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set (gtest_main_path
"${PROJECT_BINARY_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtest_maind${CMAKE_STATIC_LIBRARY_SUFFIX}")
endif ()
set (gtest_path "${PROJECT_BINARY_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set (gtest_path "${PROJECT_BINARY_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtestd${CMAKE_STATIC_LIBRARY_SUFFIX}")
endif ()
include (ExternalProject)
ExternalProject_Add (
gtest_project
PREFIX gtest_project
DOWNLOAD_COMMAND ""
SOURCE_DIR "/usr/src/googletest/"
CMAKE_ARGS "${gtest_project_args}"
BUILD_BYPRODUCTS "${gtest_main_path}" "${gtest_path}"
UPDATE_DISCONNECTED ${SEQAN3_TEST_BUILD_OFFLINE})
unset (gtest_project_args)
add_library (gtest_main STATIC IMPORTED)
add_dependencies (gtest_main gtest_project)
set_target_properties (gtest_main PROPERTIES IMPORTED_LOCATION "${gtest_main_path}")
add_library (gtest STATIC IMPORTED)
add_dependencies (gtest gtest_project)
set_target_properties (gtest PROPERTIES IMPORTED_LOCATION "${gtest_path}")
set_property (TARGET gtest
APPEND
PROPERTY INTERFACE_LINK_LIBRARIES "pthread")
set_property (TARGET gtest
APPEND
PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${SEQAN3_TEST_CLONE_DIR}/googletest/include/")
unset (gtest_main_path)
unset (gtest_path)
message (STATUS "Use googletest as external project.")
# if (NOT TARGET gtest_build)
# add_custom_target (gtest_build DEPENDS gtest_main gtest)
# target_compile_options ("gtest_main" PUBLIC "-w")
# target_compile_options ("gtest" PUBLIC "-w")
# endif ()
endmacro ()
|