Skip to content

Commit 31fa19d

Browse files
committed
Merge branch 'v0.4.0-dev'
2 parents a3e8515 + ed0654f commit 31fa19d

File tree

539 files changed

+28036
-8620
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

539 files changed

+28036
-8620
lines changed

.gitmodules

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +0,0 @@
1-
[submodule "lib/mbdx"]
2-
path = lib/mbdx
3-
url = https://gitflic.ru/project/erthink/libmdbx.git
4-

CMakeLists.txt

Lines changed: 184 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,31 @@
1-
cmake_minimum_required (VERSION 3.2)
2-
project (syncspirit)
1+
cmake_minimum_required (VERSION 3.19)
2+
project (syncspirit VERSION 0.4.0)
33

44
set(CMAKE_CXX_STANDARD 20)
55
set(CMAKE_CXX_STANDARD_REQUIRED ON)
66
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
77
set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
8+
89
cmake_policy(SET CMP0063 NEW)
910
cmake_policy(SET CMP0077 NEW)
11+
cmake_policy(SET CMP0091 NEW)
12+
cmake_policy(SET CMP0135 NEW)
1013

1114
include(GenerateExportHeader)
15+
include (FetchContent)
16+
1217
set(CMAKE_POSITION_INDEPENDENT_CODE True)
1318

19+
#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
20+
#set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
21+
1422
find_package(
1523
Boost
1624
COMPONENTS
17-
iostreams
18-
filesystem
25+
nowide
1926
program_options
2027
system
28+
url
2129
REQUIRED
2230
)
2331
find_package(OpenSSL REQUIRED)
@@ -28,11 +36,52 @@ find_package(lz4 REQUIRED)
2836
find_package(fmt REQUIRED)
2937
find_package(spdlog REQUIRED)
3038
find_package(pugixml REQUIRED)
31-
find_package(uriparser REQUIRED)
3239
find_package(tomlplusplus REQUIRED)
3340
find_package(nlohmann_json REQUIRED)
41+
#find_package(c-ares REQUIRED)
42+
43+
set(SYNCSPIRIT_VERSION "v${CMAKE_PROJECT_VERSION}")
3444

35-
set(SYNCSPIRIT_VERSION "v0.3.3")
45+
option(SYNCSPIRIT_BUILD_TESTS "Enable building tests [default: OFF]" OFF)
46+
47+
set(dist_dir "${syncspirit_BINARY_DIR}/dist")
48+
add_custom_target("deploy")
49+
if (WIN32)
50+
add_custom_target("deploy_deps"
51+
COMMAND
52+
python ${syncspirit_SOURCE_DIR}/misc/post-install-win32.py
53+
--binaries ${dist_dir}/*
54+
--dirs
55+
`conan config home`
56+
${CMAKE_BINARY_DIR}
57+
`dirname ${CMAKE_CXX_COMPILER}`/../../
58+
DEPENDS deploy
59+
)
60+
endif()
61+
62+
function(install_executable target)
63+
install(TARGETS ${target} DESTINATION bin)
64+
add_custom_target("deploy_${target}")
65+
add_dependencies("deploy" "deploy_${target}")
66+
if (WIN32)
67+
get_target_property(target_type ${target} TYPE)
68+
if (target_type STREQUAL "EXECUTABLE")
69+
add_custom_command(TARGET deploy_${target} POST_BUILD
70+
COMMAND ${CMAKE_COMMAND} -E
71+
copy
72+
$<TARGET_FILE:${target}>
73+
"${dist_dir}/$<TARGET_FILE_NAME:${target}>"
74+
)
75+
endif ()
76+
else()
77+
add_custom_command(TARGET deploy_${target} POST_BUILD
78+
COMMAND
79+
cd ${syncspirit_BINARY_DIR} && sh
80+
${syncspirit_SOURCE_DIR}/misc/make-appimage.sh
81+
$<TARGET_FILE:${target}>
82+
)
83+
endif()
84+
endfunction()
3685

3786
configure_file(misc/syncspirit-config.h.in include/syncspirit-config.h @ONLY)
3887
set(Protobuf_IMPORT_DIRS ${syncspirit_SOURCE_DIR}/src/protobuf)
@@ -42,22 +91,8 @@ protobuf_generate_cpp(
4291
src/protobuf/bep.proto
4392
src/protobuf/structs.proto
4493
)
45-
add_library(syncspirit_pb ${PROTO_SRCS})
46-
generate_export_header(syncspirit_pb
47-
EXPORT_MACRO_NAME SYNCSPIRIT_API
48-
EXPORT_FILE_NAME include/syncspirit-export.h
49-
)
50-
target_compile_options(syncspirit_pb PRIVATE
51-
-include ${CMAKE_CURRENT_BINARY_DIR}/include/syncspirit-export.h
52-
)
53-
target_include_directories(syncspirit_pb PUBLIC
54-
${Protobuf_INCLUDE_DIRS}
55-
${CMAKE_CURRENT_BINARY_DIR}
56-
${CMAKE_CURRENT_BINARY_DIR}/include
57-
)
58-
target_link_libraries(syncspirit_pb protobuf::libprotobuf)
59-
60-
add_library(syncspirit_lib
94+
add_library(syncspirit_core
95+
${PROTO_SRCS}
6196
src/constants.cpp
6297
src/config/utils.cpp
6398
src/db/cursor.cpp
@@ -71,60 +106,86 @@ add_library(syncspirit_lib
71106
src/fs/fs_supervisor.cpp
72107
src/fs/new_chunk_iterator.cpp
73108
src/fs/scan_actor.cpp
109+
src/fs/scan_scheduler.cpp
74110
src/fs/scan_task.cpp
75111
src/fs/utils.cpp
76112
src/hasher/hasher_actor.cpp
77113
src/hasher/hasher_proxy_actor.cpp
78114
src/hasher/hasher_supervisor.cpp
79-
src/model/diff/aggregate.cpp
80-
src/model/diff/base_diff.cpp
115+
src/model/diff/apply_controller.cpp
81116
src/model/diff/block_diff.cpp
82-
src/model/diff/block_visitor.cpp
83-
src/model/diff/contact_diff.cpp
84-
src/model/diff/contact_visitor.cpp
85117
src/model/diff/cluster_diff.cpp
86118
src/model/diff/cluster_visitor.cpp
119+
src/model/diff/advance/advance.cpp
120+
src/model/diff/advance/local_update.cpp
121+
src/model/diff/advance/remote_copy.cpp
122+
src/model/diff/advance/remote_win.cpp
123+
src/model/diff/contact/connect_request.cpp
124+
src/model/diff/contact/dial_request.cpp
125+
src/model/diff/contact/ignored_connected.cpp
126+
src/model/diff/contact/relay_connect_request.cpp
127+
src/model/diff/contact/peer_state.cpp
128+
src/model/diff/contact/unknown_connected.cpp
129+
src/model/diff/contact/update_contact.cpp
87130
src/model/diff/load/blocks.cpp
88-
src/model/diff/load/close_transaction.cpp
89131
src/model/diff/load/devices.cpp
90132
src/model/diff/load/file_infos.cpp
91133
src/model/diff/load/folder_infos.cpp
92134
src/model/diff/load/folders.cpp
93135
src/model/diff/load/ignored_devices.cpp
94136
src/model/diff/load/ignored_folders.cpp
95137
src/model/diff/load/load_cluster.cpp
96-
src/model/diff/load/unknown_folders.cpp
138+
src/model/diff/load/pending_devices.cpp
139+
src/model/diff/load/pending_folders.cpp
140+
src/model/diff/local/blocks_availability.cpp
141+
src/model/diff/local/custom.cpp
142+
src/model/diff/local/file_availability.cpp
143+
src/model/diff/local/io_failure.cpp
144+
src/model/diff/local/scan_finish.cpp
145+
src/model/diff/local/scan_request.cpp
146+
src/model/diff/local/scan_start.cpp
147+
src/model/diff/local/synchronization_finish.cpp
148+
src/model/diff/local/synchronization_start.cpp
149+
src/model/diff/modify/add_blocks.cpp
150+
src/model/diff/modify/add_remote_folder_infos.cpp
151+
src/model/diff/modify/add_ignored_device.cpp
152+
src/model/diff/modify/add_pending_device.cpp
153+
src/model/diff/modify/add_pending_folders.cpp
97154
src/model/diff/modify/append_block.cpp
98155
src/model/diff/modify/block_ack.cpp
99156
src/model/diff/modify/block_rej.cpp
100157
src/model/diff/modify/block_transaction.cpp
101-
src/model/diff/modify/blocks_availability.cpp
102158
src/model/diff/modify/clone_block.cpp
103-
src/model/diff/modify/clone_file.cpp
104-
src/model/diff/modify/connect_request.cpp
105-
src/model/diff/modify/create_folder.cpp
106-
src/model/diff/modify/file_availability.cpp
107159
src/model/diff/modify/finish_file.cpp
108-
src/model/diff/modify/finish_file_ack.cpp
160+
src/model/diff/modify/generic_remove.cpp
109161
src/model/diff/modify/lock_file.cpp
110162
src/model/diff/modify/mark_reachable.cpp
111-
src/model/diff/modify/local_update.cpp
112-
src/model/diff/modify/relay_connect_request.cpp
163+
src/model/diff/modify/remove_blocks.cpp
164+
src/model/diff/modify/remove_files.cpp
165+
src/model/diff/modify/remove_folder.cpp
166+
src/model/diff/modify/remove_folder_infos.cpp
167+
src/model/diff/modify/remove_peer.cpp
168+
src/model/diff/modify/remove_ignored_device.cpp
169+
src/model/diff/modify/remove_pending_device.cpp
170+
src/model/diff/modify/remove_pending_folders.cpp
171+
src/model/diff/modify/reset_folder_infos.cpp
113172
src/model/diff/modify/share_folder.cpp
173+
src/model/diff/modify/suspend_folder.cpp
114174
src/model/diff/modify/unshare_folder.cpp
115-
src/model/diff/modify/update_contact.cpp
116175
src/model/diff/modify/update_peer.cpp
117-
src/model/diff/peer/peer_state.cpp
118-
src/model/diff/peer/cluster_remove.cpp
176+
src/model/diff/modify/upsert_folder.cpp
177+
src/model/diff/modify/upsert_folder_info.cpp
119178
src/model/diff/peer/cluster_update.cpp
120179
src/model/diff/peer/update_folder.cpp
121180
src/model/misc/block_iterator.cpp
122181
src/model/misc/error_code.cpp
123182
src/model/misc/file_block.cpp
124183
src/model/misc/file_iterator.cpp
184+
src/model/misc/orphaned_blocks.cpp
185+
src/model/misc/resolver.cpp
186+
src/model/misc/sequencer.cpp
125187
src/model/misc/updates_streamer.cpp
126188
src/model/misc/uuid.cpp
127-
src/model/misc/version_utils.cpp
128189
src/model/block_info.cpp
129190
src/model/cluster.cpp
130191
src/model/device.cpp
@@ -135,8 +196,11 @@ add_library(syncspirit_lib
135196
src/model/folder_info.cpp
136197
src/model/ignored_device.cpp
137198
src/model/ignored_folder.cpp
199+
src/model/pending_device.cpp
200+
src/model/pending_folder.cpp
138201
src/model/remote_folder_info.cpp
139-
src/model/unknown_folder.cpp
202+
src/model/some_device.cpp
203+
src/model/version.cpp
140204
src/net/acceptor_actor.cpp
141205
src/net/cluster_supervisor.cpp
142206
src/net/controller_actor.cpp
@@ -153,6 +217,7 @@ add_library(syncspirit_lib
153217
src/net/relay_actor.cpp
154218
src/net/resolver_actor.cpp
155219
src/net/names.cpp
220+
src/net/sink_actor.cpp
156221
src/net/ssdp_actor.cpp
157222
src/net/upnp_actor.cpp
158223
src/proto/bep_support.cpp
@@ -164,51 +229,99 @@ add_library(syncspirit_lib
164229
src/transport/http.cpp
165230
src/utils/base32.cpp
166231
src/utils/beast_support.cpp
232+
src/utils/dns.cpp
167233
src/utils/error_code.cpp
168234
src/utils/location.cpp
169235
src/utils/log.cpp
236+
src/utils/log-setup.cpp
170237
src/utils/network_interface.cpp
171238
src/utils/platform.cpp
239+
src/utils/time.cpp
172240
src/utils/tls.cpp
173241
src/utils/uri.cpp
174242
)
243+
generate_export_header(syncspirit_core
244+
EXPORT_MACRO_NAME SYNCSPIRIT_API
245+
EXPORT_FILE_NAME include/syncspirit-export.h
246+
)
247+
target_compile_options(syncspirit_core PRIVATE
248+
-include ${CMAKE_CURRENT_BINARY_DIR}/include/syncspirit-export.h
249+
)
250+
251+
# windows xp patch required:
252+
# - CancelIoEx(ior->overlapped_fd, &item->ov);
253+
# + CancelIo(ior->overlapped_fd);
254+
FetchContent_Declare(MDBX
255+
URL https://libmdbx.dqdkfa.ru/release/libmdbx-amalgamated-0.13.4.tar.xz
256+
URL_HASH SHA256=86df30ca2231c9b3ad71424bb829dca9041947f5539d4295030c653d4982c1be
257+
)
258+
if (WIN32)
259+
set(BUILD_SHARED_LIBS true CACHE BOOL "BUILD_SHARED_LIBS")
260+
set(MDBX_BUILD_SHARED_LIBRARY true CACHE BOOL "MDBX_BUILD_SHARED_LIBRARY")
261+
else()
262+
set(BUILD_SHARED_LIBS false CACHE BOOL "BUILD_SHARED_LIBS")
263+
set(MDBX_BUILD_SHARED_LIBRARY false CACHE BOOL "MDBX_BUILD_SHARED_LIBRARY")
264+
endif()
265+
set(MDBX_BUILD_TOOLS false CACHE BOOL "MDBX_BUILD_TOOLS")
266+
set(MDBX_ENABLE_TESTS false CACHE BOOL "MDBX_ENABLE_TESTS")
267+
set(MDBX_BUILD_CXX false CACHE BOOL "MDBX_BUILD_CXX")
268+
set(MDBX_ALLOY_BUILD_DEFAULT true CACHE BOOL "MDBX_ALLOY_BUILD_DEFAULT")
269+
set(MDBX_ALLOY_BUILD true CACHE BOOL "MDBX_ALLOY_BUILD")
270+
FetchContent_MakeAvailable(MDBX)
175271

176-
set(BUILD_SHARED_LIBS false CACHE BOOL "BUILD_SHARED_LIBS")
177-
set(MDBX_BUILD_TOOLS false CACHE BOOL "MDBX_BUILD_TOOLS")
178-
set(MDBX_ENABLE_TESTS false CACHE BOOL "MDBX_ENABLE_TESTS")
179-
set(MDBX_BUILD_CXX false CACHE BOOL "MDBX_BUILD_CXX")
180-
set(MDBX_BUILD_SHARED_LIBRARY true CACHE BOOL "MDBX_BUILD_SHARED_LIBRARY")
181272

182-
add_subdirectory("lib/mbdx")
273+
# To support WinXP there is need of that commit. When cares will be released
274+
# and pushed to conan center, the ready receive capn be used
275+
FetchContent_Declare(C_ARES
276+
GIT_REPOSITORY https://github.com/c-ares/c-ares.git
277+
GIT_TAG 7978cf75a82f9860da241227169a4d7f1d1f549a
278+
# URL https://github.com/c-ares/c-ares/archive/refs/tags/v1.34.4.tar.gz
279+
# URL_HASH SHA256=a35f7c4cdbdfaf0a69a9a50029e95ffe403daf605fade05c649d18333592222d
280+
)
281+
set(CARES_STATIC true CACHE BOOL "CARES_STATIC")
282+
set(CARES_SHARED false CACHE BOOL "CARES_SHARED")
283+
set(CARES_STATIC_PIC true CACHE BOOL "CARES_STATIC_PIC")
284+
set(CARES_BUILD_TOOLS false CACHE BOOL "CARES_BUILD_TOOLS")
285+
set(CARES_THREADS false CACHE BOOL "CARES_THREADS")
286+
FetchContent_MakeAvailable(C_ARES)
183287

184-
target_include_directories(syncspirit_lib PUBLIC
185-
${syncspirit_SOURCE_DIR}/lib/mbdx
288+
target_include_directories(syncspirit_core PUBLIC
289+
${Protobuf_INCLUDE_DIRS}
186290
${OPENSSL_INCLUDE_DIR}
187291
${CMAKE_CURRENT_BINARY_DIR}
292+
${CMAKE_CURRENT_BINARY_DIR}/include
188293
${CMAKE_CURRENT_SOURCE_DIR}/src
189294
)
190295

191-
target_link_libraries(syncspirit_lib
192-
syncspirit_pb
193-
rotor::asio
194-
rotor::thread
195-
pugixml::pugixml
196-
Boost::iostreams
197-
Boost::filesystem
198-
Boost::program_options
199-
Boost::system
200-
OpenSSL::SSL
201-
fmt::fmt
202-
spdlog::spdlog
203-
uriparser::uriparser
204-
tomlplusplus::tomlplusplus
205-
nlohmann_json::nlohmann_json
206-
lz4::lz4
207-
$<IF:$<PLATFORM_ID:Windows>,mdbx,mdbx-static>
208-
$<$<PLATFORM_ID:Windows>:iphlpapi>
209-
$<$<PLATFORM_ID:Windows>:ws2_32>
296+
target_link_libraries(syncspirit_core
297+
PUBLIC
298+
protobuf::libprotobuf
299+
rotor::asio
300+
rotor::thread
301+
pugixml::pugixml
302+
Boost::nowide
303+
Boost::program_options
304+
Boost::system
305+
Boost::url
306+
OpenSSL::SSL
307+
fmt::fmt
308+
spdlog::spdlog
309+
tomlplusplus::tomlplusplus
310+
nlohmann_json::nlohmann_json
311+
lz4::lz4
312+
$<IF:$<PLATFORM_ID:Windows>,mdbx,mdbx-static>
313+
$<$<PLATFORM_ID:Windows>:iphlpapi>
314+
$<$<PLATFORM_ID:Windows>:ws2_32>
315+
$<$<PLATFORM_ID:Windows>:wsock32>
316+
PRIVATE
317+
c-ares::cares
210318
)
319+
install_executable("syncspirit_core")
320+
321+
if (SYNCSPIRIT_BUILD_TESTS)
322+
enable_testing()
323+
add_subdirectory("tests")
324+
endif()
211325

212-
enable_testing()
213-
add_subdirectory("tests")
214326
add_subdirectory("src/ui-daemon")
327+
add_subdirectory("src/ui-fltk")

0 commit comments

Comments
 (0)