|
Packit |
534379 |
#!/usr/bin/cmake -P
|
|
Packit |
534379 |
## Copyright(c) 2017-2020, Intel Corporation
|
|
Packit |
534379 |
##
|
|
Packit |
534379 |
## Redistribution and use in source and binary forms, with or without
|
|
Packit |
534379 |
## modification, are permitted provided that the following conditions are met:
|
|
Packit |
534379 |
##
|
|
Packit |
534379 |
## * Redistributions of source code must retain the above copyright notice,
|
|
Packit |
534379 |
## this list of conditions and the following disclaimer.
|
|
Packit |
534379 |
## * Redistributions in binary form must reproduce the above copyright notice,
|
|
Packit |
534379 |
## this list of conditions and the following disclaimer in the documentation
|
|
Packit |
534379 |
## and/or other materials provided with the distribution.
|
|
Packit |
534379 |
## * Neither the name of Intel Corporation nor the names of its contributors
|
|
Packit |
534379 |
## may be used to endorse or promote products derived from this software
|
|
Packit |
534379 |
## without specific prior written permission.
|
|
Packit |
534379 |
##
|
|
Packit |
534379 |
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
Packit |
534379 |
## AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
Packit |
534379 |
## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
Packit |
534379 |
## ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
Packit |
534379 |
## LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
Packit |
534379 |
## CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
Packit |
534379 |
## SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
Packit |
534379 |
## INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
Packit |
534379 |
## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
Packit |
534379 |
## ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
Packit |
534379 |
## POSSIBILITY OF SUCH DAMAGE
|
|
Packit |
534379 |
|
|
Packit |
534379 |
check_cxx_compiler_flag("-Wno-sign-compare" CXX_SUPPORTS_NO_SIGN_COMPARE)
|
|
Packit |
534379 |
|
|
Packit |
534379 |
set(OPAE_TEST_LIBRARIES test_system fpga_db
|
|
Packit |
534379 |
CACHE LIST "OPAE test libs." FORCE)
|
|
Packit |
534379 |
|
|
Packit |
534379 |
function(opae_load_gtest)
|
|
Packit |
534379 |
message(STATUS "Trying to fetch gtest through git...")
|
|
Packit |
534379 |
find_package(Git REQUIRED)
|
|
Packit |
534379 |
|
|
Packit |
534379 |
include(ExternalProject)
|
|
Packit |
534379 |
|
|
Packit |
534379 |
# Download and install GoogleTest
|
|
Packit |
534379 |
ExternalProject_Add(
|
|
Packit |
534379 |
gtest
|
|
Packit |
534379 |
GIT_REPOSITORY "https://github.com/google/googletest"
|
|
Packit |
534379 |
GIT_TAG "release-1.8.0"
|
|
Packit |
534379 |
UPDATE_COMMAND ""
|
|
Packit |
534379 |
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/gtest
|
|
Packit |
534379 |
CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
|
Packit |
534379 |
# Disable install step
|
|
Packit |
534379 |
INSTALL_COMMAND "")
|
|
Packit |
534379 |
|
|
Packit |
534379 |
set(gtest_root "${CMAKE_CURRENT_BINARY_DIR}/gtest/src/gtest/googletest")
|
|
Packit |
534379 |
message(STATUS "gtest located at: ${gtest_root}")
|
|
Packit |
534379 |
|
|
Packit |
534379 |
# Create a libgtest target to be used as a dependency by test programs
|
|
Packit |
534379 |
add_library(libgtest IMPORTED STATIC GLOBAL)
|
|
Packit |
534379 |
add_library(libgtest_main IMPORTED STATIC GLOBAL)
|
|
Packit |
534379 |
add_dependencies(libgtest gtest)
|
|
Packit |
534379 |
add_dependencies(libgtest_main gtest)
|
|
Packit |
534379 |
|
|
Packit |
534379 |
# Get GTest source and binary directories from CMake project
|
|
Packit |
534379 |
ExternalProject_Get_Property(gtest source_dir binary_dir)
|
|
Packit |
534379 |
|
|
Packit |
534379 |
# Set libgtest properties
|
|
Packit |
534379 |
set_target_properties(libgtest PROPERTIES
|
|
Packit |
534379 |
"IMPORTED_LOCATION" "${binary_dir}/googlemock/gtest/libgtest.a"
|
|
Packit |
534379 |
"IMPORTED_LINK_INTERFACE_LIBRARIES" "${CMAKE_THREAD_LIBS_INIT}")
|
|
Packit |
534379 |
# Set libgtest_main properties
|
|
Packit |
534379 |
set_target_properties(libgtest_main PROPERTIES
|
|
Packit |
534379 |
"IMPORTED_LOCATION" "${binary_dir}/googlemock/gtest/libgtest_main.a"
|
|
Packit |
534379 |
"IMPORTED_LINK_INTERFACE_LIBRARIES" "${CMAKE_THREAD_LIBS_INIT}")
|
|
Packit |
534379 |
|
|
Packit |
534379 |
# Export gtest variables
|
|
Packit |
534379 |
set(GTEST_ROOT "${gtest_root}" CACHE PATH "GTest root dir." FORCE)
|
|
Packit |
534379 |
set(GTEST_INCLUDE_DIRS "${gtest_root}/include"
|
|
Packit |
534379 |
CACHE PATH "GTest include dir." FORCE)
|
|
Packit |
534379 |
set(GTEST_MAIN_LIBRARY "libgtest_main"
|
|
Packit |
534379 |
CACHE PATH "GTest main lib." FORCE)
|
|
Packit |
534379 |
set(GTEST_LIBRARIES "libgtest"
|
|
Packit |
534379 |
CACHE PATH "GTest test lib." FORCE)
|
|
Packit |
534379 |
set(GTEST_BOTH_LIBRARIES libgtest_main libgtest
|
|
Packit |
534379 |
CACHE LIST "GTest both libs." FORCE)
|
|
Packit |
534379 |
set(GTEST_FOUND TRUE CACHE BOOL "GTest found?" FORCE)
|
|
Packit |
534379 |
endfunction()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
function(opae_test_add)
|
|
Packit |
534379 |
set(options TEST_FPGAD)
|
|
Packit |
534379 |
set(oneValueArgs TARGET)
|
|
Packit |
534379 |
set(multiValueArgs SOURCE LIBS)
|
|
Packit |
534379 |
cmake_parse_arguments(OPAE_TEST_ADD "${options}"
|
|
Packit |
534379 |
"${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
if(OPAE_ENABLE_MOCK)
|
|
Packit |
534379 |
set(MOCK_C ${opae-test_ROOT}/framework/mock/mock.c)
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
add_executable(${OPAE_TEST_ADD_TARGET}
|
|
Packit |
534379 |
${OPAE_TEST_ADD_SOURCE} ${MOCK_C})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
set_target_properties(${OPAE_TEST_ADD_TARGET}
|
|
Packit |
534379 |
PROPERTIES
|
|
Packit |
534379 |
CXX_STANDARD 11
|
|
Packit |
534379 |
CXX_STANDARD_REQUIRED YES
|
|
Packit |
534379 |
CXX_EXTENSIONS NO)
|
|
Packit |
534379 |
target_compile_definitions(${OPAE_TEST_ADD_TARGET}
|
|
Packit |
534379 |
PRIVATE
|
|
Packit |
534379 |
HAVE_CONFIG_H=1)
|
|
Packit |
534379 |
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
Packit |
534379 |
target_compile_definitions(${OPAE_TEST_ADD_TARGET}
|
|
Packit |
534379 |
PRIVATE
|
|
Packit |
534379 |
LIBOPAE_DEBUG=1)
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
if(CXX_SUPPORTS_NO_SIGN_COMPARE)
|
|
Packit |
534379 |
target_compile_options(${OPAE_TEST_ADD_TARGET}
|
|
Packit |
534379 |
PRIVATE -Wno-sign-compare)
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
target_include_directories(${OPAE_TEST_ADD_TARGET}
|
|
Packit |
534379 |
PUBLIC
|
|
Packit |
534379 |
$<BUILD_INTERFACE:${OPAE_INCLUDE_PATH}>
|
|
Packit |
534379 |
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
|
|
Packit |
534379 |
$<INSTALL_INTERFACE:include>
|
|
Packit |
534379 |
PRIVATE
|
|
Packit |
534379 |
${OPAE_LIBS_ROOT}
|
|
Packit |
534379 |
${OPAE_LIBS_ROOT}/plugins/xfpga
|
|
Packit |
534379 |
${OPAE_LIBS_ROOT}/libopae-c
|
|
Packit |
534379 |
${opae-test_ROOT}/framework
|
|
Packit |
534379 |
${GTEST_INCLUDE_DIRS})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
if(${OPAE_TEST_ADD_TEST_FPGAD})
|
|
Packit |
534379 |
target_include_directories(${OPAE_TEST_ADD_TARGET}
|
|
Packit |
534379 |
PRIVATE
|
|
Packit |
534379 |
${opae-test_ROOT}/framework/mock/test_fpgad)
|
|
Packit |
534379 |
endif(${OPAE_TEST_ADD_TEST_FPGAD})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
target_link_libraries(${OPAE_TEST_ADD_TARGET}
|
|
Packit |
534379 |
${CMAKE_THREAD_LIBS_INIT}
|
|
Packit |
534379 |
${OPAE_TEST_LIBRARIES}
|
|
Packit |
534379 |
${libjson-c_LIBRARIES}
|
|
Packit |
534379 |
${libuuid_LIBRARIES}
|
|
Packit |
534379 |
${GTEST_BOTH_LIBRARIES}
|
|
Packit |
534379 |
${OPAE_TEST_ADD_LIBS})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_coverage_build(TARGET ${OPAE_TEST_ADD_TARGET}
|
|
Packit |
534379 |
SOURCE ${OPAE_TEST_ADD_SOURCE})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
add_test(
|
|
Packit |
534379 |
NAME ${OPAE_TEST_ADD_TARGET}
|
|
Packit |
534379 |
COMMAND $<TARGET_FILE:${OPAE_TEST_ADD_TARGET}>
|
|
Packit |
534379 |
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
Packit |
534379 |
)
|
|
Packit |
534379 |
endfunction()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
function(opae_test_add_static_lib)
|
|
Packit |
534379 |
set(options )
|
|
Packit |
534379 |
set(oneValueArgs TARGET)
|
|
Packit |
534379 |
set(multiValueArgs SOURCE LIBS)
|
|
Packit |
534379 |
cmake_parse_arguments(OPAE_TEST_ADD_STATIC_LIB "${options}"
|
|
Packit |
534379 |
"${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
add_library(${OPAE_TEST_ADD_STATIC_LIB_TARGET} STATIC
|
|
Packit |
534379 |
${OPAE_TEST_ADD_STATIC_LIB_SOURCE})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
target_include_directories(${OPAE_TEST_ADD_STATIC_LIB_TARGET}
|
|
Packit |
534379 |
PUBLIC
|
|
Packit |
534379 |
$<BUILD_INTERFACE:${OPAE_INCLUDE_PATH}>
|
|
Packit |
534379 |
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
|
|
Packit |
534379 |
$<INSTALL_INTERFACE:include>
|
|
Packit |
534379 |
PRIVATE
|
|
Packit |
534379 |
${OPAE_LIBS_ROOT}
|
|
Packit |
534379 |
${OPAE_LIBS_ROOT}/plugins/xfpga
|
|
Packit |
534379 |
${OPAE_LIBS_ROOT}/libopae-c)
|
|
Packit |
534379 |
|
|
Packit |
534379 |
set_property(TARGET ${OPAE_TEST_ADD_STATIC_LIB_TARGET}
|
|
Packit |
534379 |
PROPERTY
|
|
Packit |
534379 |
POSITION_INDEPENDENT_CODE ON)
|
|
Packit |
534379 |
target_compile_definitions(${OPAE_TEST_ADD_STATIC_LIB_TARGET}
|
|
Packit |
534379 |
PRIVATE
|
|
Packit |
534379 |
HAVE_CONFIG_H=1
|
|
Packit |
534379 |
PIC=1
|
|
Packit |
534379 |
STATIC=)
|
|
Packit |
534379 |
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
Packit |
534379 |
target_compile_definitions(${OPAE_TEST_ADD_STATIC_LIB_TARGET}
|
|
Packit |
534379 |
PRIVATE
|
|
Packit |
534379 |
LIBOPAE_DEBUG=1)
|
|
Packit |
534379 |
endif()
|
|
Packit |
534379 |
|
|
Packit |
534379 |
target_link_libraries(${OPAE_TEST_ADD_STATIC_LIB_TARGET}
|
|
Packit |
534379 |
${OPAE_TEST_ADD_STATIC_LIB_LIBS})
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_coverage_build(TARGET ${OPAE_TEST_ADD_STATIC_LIB_TARGET}
|
|
Packit |
534379 |
SOURCE ${OPAE_TEST_ADD_STATIC_LIB_SOURCE})
|
|
Packit |
534379 |
endfunction()
|