2024-09-17 19:00:25 +00:00
|
|
|
# Deskflow -- mouse and keyboard sharing utility
|
2024-07-02 10:23:56 +00:00
|
|
|
# Copyright (C) 2012-2024 Symless Ltd.
|
|
|
|
|
# Copyright (C) 2009-2012 Nick Bolton
|
|
|
|
|
#
|
2012-06-10 16:50:54 +00:00
|
|
|
# This package is free software; you can redistribute it and/or
|
|
|
|
|
# modify it under the terms of the GNU General Public License
|
2015-05-03 02:33:52 +00:00
|
|
|
# found in the file LICENSE that should have accompanied this file.
|
2024-07-02 10:23:56 +00:00
|
|
|
#
|
2012-06-10 16:50:54 +00:00
|
|
|
# This package is distributed in the hope that it will be useful,
|
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
# GNU General Public License for more details.
|
|
|
|
|
#
|
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
|
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
2024-10-16 05:31:53 +00:00
|
|
|
include(FetchContent)
|
|
|
|
|
set(INSTALL_GTEST OFF)
|
|
|
|
|
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)
|
|
|
|
|
|
2024-07-18 07:04:39 +00:00
|
|
|
macro(config_all_tests)
|
2024-07-02 10:23:56 +00:00
|
|
|
|
2024-10-12 22:03:09 +00:00
|
|
|
# Required to load images from .qrc file.
|
|
|
|
|
set(CMAKE_AUTORCC ON)
|
|
|
|
|
|
2024-10-01 13:30:24 +00:00
|
|
|
set(base_dir ${PROJECT_SOURCE_DIR})
|
2024-07-18 07:04:39 +00:00
|
|
|
set(src_dir ${base_dir}/src)
|
|
|
|
|
set(test_base_dir ${src_dir}/test)
|
|
|
|
|
set(gui_dir ${src_dir}/gui/src)
|
2012-06-10 16:50:54 +00:00
|
|
|
|
2024-07-18 07:04:39 +00:00
|
|
|
config_test_deps()
|
2014-02-24 16:32:18 +00:00
|
|
|
|
2024-07-18 07:04:39 +00:00
|
|
|
add_subdirectory(integtests)
|
|
|
|
|
add_subdirectory(unittests)
|
|
|
|
|
|
|
|
|
|
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()
|
|
|
|
|
|
|
|
|
|
if(WIN32)
|
2024-10-01 13:30:24 +00:00
|
|
|
list(APPEND sources ${PROJECT_BINARY_DIR}/src/version.rc)
|
2024-07-18 07:04:39 +00:00
|
|
|
endif()
|
|
|
|
|
|
2024-10-28 19:20:35 +00:00
|
|
|
list(APPEND sources ${PROJECT_SOURCE_DIR}/src/gui/res/deskflow.qrc)
|
2024-10-12 22:03:09 +00:00
|
|
|
|
2024-07-29 17:04:17 +00:00
|
|
|
replace_platform_sources()
|
|
|
|
|
replace_arch_sources()
|
2024-07-18 07:04:39 +00:00
|
|
|
|
|
|
|
|
endmacro()
|
|
|
|
|
|
2024-07-29 17:04:17 +00:00
|
|
|
macro(replace_platform_sources)
|
2024-07-18 07:04:39 +00:00
|
|
|
|
|
|
|
|
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()
|
|
|
|
|
|
2024-07-29 17:04:17 +00:00
|
|
|
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()
|
|
|
|
|
|
2024-07-18 07:04:39 +00:00
|
|
|
macro(config_test_deps)
|
|
|
|
|
|
2024-08-09 08:08:29 +00:00
|
|
|
# gui library autogen headers:
|
|
|
|
|
# qt doesn't seem to auto include the autogen headers for libraries.
|
2024-10-01 13:30:24 +00:00
|
|
|
include_directories(${PROJECT_BINARY_DIR}/src/lib/gui/gui_autogen/include)
|
2024-08-09 08:08:29 +00:00
|
|
|
|
2024-07-18 07:04:39 +00:00
|
|
|
set(test_libs
|
|
|
|
|
arch
|
|
|
|
|
base
|
|
|
|
|
client
|
|
|
|
|
server
|
|
|
|
|
io
|
|
|
|
|
net
|
|
|
|
|
platform
|
|
|
|
|
server
|
2024-09-17 19:00:25 +00:00
|
|
|
app
|
2024-07-18 07:04:39 +00:00
|
|
|
mt
|
|
|
|
|
ipc
|
2024-07-23 19:17:40 +00:00
|
|
|
gui
|
2024-10-16 05:31:53 +00:00
|
|
|
GTest::gtest
|
|
|
|
|
GTest::gmock
|
2024-07-18 07:04:39 +00:00
|
|
|
${libs})
|
|
|
|
|
|
|
|
|
|
endmacro()
|
|
|
|
|
|
|
|
|
|
config_all_tests()
|