# SPDX-FileCopyrightText: 2024 Deskflow Developers # SPDX-FileCopyrightText: 2012 - 2024 Symless Ltd # SPDX-FileCopyrightText: 2009 - 2012 Nick Bolton # SPDX-License-Identifier: MIT include(FetchContent) FetchContent_Declare( googletest GIT_REPOSITORY https://github.com/google/googletest.git GIT_TAG b514bdc898e2951020cbdca1304b75f5950d1f59 # release-1.15.2 GIT_SHALLOW 1 FIND_PACKAGE_ARGS NAMES GTest ) FetchContent_MakeAvailable(googletest) macro(config_all_tests) set(base_dir ${PROJECT_SOURCE_DIR}) set(src_dir ${base_dir}/src) set(test_base_dir ${src_dir}/unittests/legacytests) set(gui_dir ${src_dir}/gui/src) config_test_deps() add_subdirectory(legacytests) endmacro() macro(config_test) include_directories( ${test_base_dir} ${src_dir} ${src_dir}/lib ${gui_dir} ${ext_dir}) set_sources() endmacro() macro(set_sources) file(GLOB_RECURSE headers ${CMAKE_CURRENT_SOURCE_DIR}/*.h) file(GLOB_RECURSE sources ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) file(GLOB_RECURSE shared_headers ${test_base_dir}/shared/*.h) file(GLOB_RECURSE shared_sources ${test_base_dir}/shared/*.cpp) list(APPEND headers ${shared_headers}) list(APPEND sources ${shared_sources}) file(GLOB_RECURSE mock_headers ${test_base_dir}/mock/*.h) file(GLOB_RECURSE mock_sources ${test_base_dir}/mock/*.cpp) list(APPEND headers ${mock_headers}) list(APPEND sources ${mock_sources}) if(ADD_HEADERS_TO_SOURCES) list(APPEND sources ${headers}) endif() list(APPEND sources ${PROJECT_SOURCE_DIR}/src/apps/res/deskflow.qrc) replace_platform_sources() replace_arch_sources() endmacro() macro(replace_platform_sources) set(platform_dir ${CMAKE_CURRENT_SOURCE_DIR}/platform) # Remove platform files so that specific platform files can be added later. # This is a bit weird, but it's simpler to include everything, remove all # platform files, then only include the platforms we need. file(GLOB_RECURSE all_platform_files ${platform_dir}/*) list(REMOVE_ITEM headers ${all_platform_files}) list(REMOVE_ITEM sources ${all_platform_files}) if(WIN32) file(GLOB platform_sources ${platform_dir}/MSWindows*.cpp) file(GLOB platform_headers ${platform_dir}/MSWindows*.h) elseif(APPLE) file(GLOB platform_sources ${platform_dir}/OSX*.cpp) file(GLOB platform_headers ${platform_dir}/OSX*.h) elseif(UNIX) file(GLOB platform_sources ${platform_dir}/XWindows*.cpp) file(GLOB platform_headers ${platform_dir}/XWindows*.h) endif() list(APPEND sources ${platform_sources}) list(APPEND headers ${platform_headers}) endmacro() macro(replace_arch_sources) set(arch_dir ${CMAKE_CURRENT_SOURCE_DIR}/arch) # Remove arch files so that specific arch files can be added later. # This is a bit weird, but it's simpler to include everything, remove all # arch files, then only include the archs we need. file(GLOB_RECURSE all_arch_files ${arch_dir}/*) list(REMOVE_ITEM headers ${all_arch_files}) list(REMOVE_ITEM sources ${all_arch_files}) if(WIN32) file(GLOB arch_sources ${arch_dir}/win32/*.cpp) file(GLOB arch_headers ${arch_dir}/win32/*.h) elseif(UNIX) file(GLOB arch_sources ${arch_dir}/unix/*.cpp) file(GLOB arch_headers ${arch_dir}/unix/*.h) endif() list(APPEND sources ${arch_sources}) list(APPEND headers ${arch_headers}) endmacro() macro(config_test_deps) # gui library autogen headers: # qt doesn't seem to auto include the autogen headers for libraries. include_directories(${PROJECT_BINARY_DIR}/src/lib/gui/gui_autogen/include) set(test_libs arch base client server io net platform server app mt gui GTest::gtest GTest::gmock ${libs}) endmacro() config_all_tests()