diff options
| author | Foe <Foereaper@users.noreply.github.com> | 2024-06-02 17:44:24 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2025-11-14 14:49:16 +0100 |
| commit | 66f5a282b76a55417c4a13884845f1dab8c2f9c2 (patch) | |
| tree | e8822f0d48419c90e9caf659af12223fd9649588 | |
| parent | d5b2dcb1aaa14317b47e20735e5f55a93a73cad4 (diff) | |
Build: Allow efsw to be built independently of WITH_DYNAMIC_LINKING option (#30019)
(cherry picked from commit 6a5fa255fe053796588684e3876f6047cf92a08f)
| -rw-r--r-- | cmake/options.cmake | 8 | ||||
| -rw-r--r-- | dep/CMakeLists.txt | 5 | ||||
| -rw-r--r-- | dep/efsw/CMakeLists.txt | 270 | ||||
| -rw-r--r-- | src/server/game/CMakeLists.txt | 7 |
4 files changed, 149 insertions, 141 deletions
diff --git a/cmake/options.cmake b/cmake/options.cmake index 05d8e9e0d68..9233575aad5 100644 --- a/cmake/options.cmake +++ b/cmake/options.cmake @@ -37,6 +37,7 @@ option(TOOLS "Build map/vmap/mmap extraction/assembler tools" option(USE_SCRIPTPCH "Use precompiled headers when compiling scripts" 1) option(USE_COREPCH "Use precompiled headers when compiling servers" 1) option(WITH_DYNAMIC_LINKING "Enable dynamic library linking." 0) +option(WITH_FILESYSTEM_WATCHER "Include filesystem watcher library" 0) IsDynamicLinkingRequired(WITH_DYNAMIC_LINKING_FORCED) if(WITH_DYNAMIC_LINKING AND WITH_DYNAMIC_LINKING_FORCED) set(WITH_DYNAMIC_LINKING_FORCED OFF) @@ -46,6 +47,9 @@ if(WITH_DYNAMIC_LINKING OR WITH_DYNAMIC_LINKING_FORCED) else() set(BUILD_SHARED_LIBS OFF) endif() +if(WITH_FILESYSTEM_WATCHER OR BUILD_SHARED_LIBS) + set(BUILD_EFSW ON) +endif() option(WITH_WARNINGS "Show all warnings during compile" 0) option(WITH_WARNINGS_AS_ERRORS "Treat warnings as errors" 0) option(WITH_COREDEBUG "Include additional debug-code in core" 0) @@ -55,8 +59,8 @@ option(COPY_CONF "Copy authserver and worldserver .conf.dist files to the set(WITH_SOURCE_TREE "hierarchical" CACHE STRING "Build the source tree for IDE's.") set_property(CACHE WITH_SOURCE_TREE PROPERTY STRINGS no flat hierarchical hierarchical-folders) option(WITHOUT_GIT "Disable the GIT testing routines" 0) -option(BUILD_TESTING "Build test suite" 0) +option(BUILD_TESTING "Build test suite" 0) if(UNIX) - option(USE_LD_GOLD "Use GNU gold linker" 0) + option(USE_LD_GOLD "Use GNU gold linker" 0) endif() diff --git a/dep/CMakeLists.txt b/dep/CMakeLists.txt index 234995298c8..0aa598ca464 100644 --- a/dep/CMakeLists.txt +++ b/dep/CMakeLists.txt @@ -31,10 +31,13 @@ if(SERVERS) add_subdirectory(readline) add_subdirectory(gsoap) add_subdirectory(rapidjson) - add_subdirectory(efsw) add_subdirectory(protobuf) endif() +if(SERVERS AND BUILD_EFSW) + add_subdirectory(efsw) +endif() + if(TOOLS) add_subdirectory(CascLib) endif() diff --git a/dep/efsw/CMakeLists.txt b/dep/efsw/CMakeLists.txt index aba29c55905..2e6da4168ea 100644 --- a/dep/efsw/CMakeLists.txt +++ b/dep/efsw/CMakeLists.txt @@ -1,154 +1,150 @@ -if (BUILD_SHARED_LIBS) - add_library(efsw STATIC) +add_library(efsw STATIC) - if(WIN32) - set(efsw_platform_dir "win") - else() - set(efsw_platform_dir "posix") - endif() +if(WIN32) + set(efsw_platform_dir "win") +else() + set(efsw_platform_dir "posix") +endif() + +target_sources(efsw + PRIVATE + src/efsw/Debug.cpp + src/efsw/DirectorySnapshot.cpp + src/efsw/DirectorySnapshotDiff.cpp + src/efsw/DirWatcherGeneric.cpp + src/efsw/FileInfo.cpp + src/efsw/FileSystem.cpp + src/efsw/FileWatcher.cpp + src/efsw/FileWatcherCWrapper.cpp + src/efsw/FileWatcherGeneric.cpp + src/efsw/FileWatcherImpl.cpp + src/efsw/Log.cpp + src/efsw/String.cpp + src/efsw/System.cpp + src/efsw/Watcher.cpp + src/efsw/WatcherGeneric.cpp + src/efsw/platform/${efsw_platform_dir}/FileSystemImpl.cpp + src/efsw/platform/${efsw_platform_dir}/SystemImpl.cpp) + +target_sources(efsw + PUBLIC + FILE_SET HEADERS + BASE_DIRS include + FILES + include/efsw/efsw.h + include/efsw/efsw.hpp) +target_sources(efsw + PRIVATE + FILE_SET efsw_private_headers + TYPE HEADERS + BASE_DIRS src + FILES + src/efsw/Atomic.hpp + src/efsw/base.hpp + src/efsw/Debug.hpp + src/efsw/DirectorySnapshot.hpp + src/efsw/DirectorySnapshotDiff.hpp + src/efsw/DirWatcherGeneric.hpp + src/efsw/FileInfo.hpp + src/efsw/FileSystem.hpp + src/efsw/FileWatcherGeneric.hpp + src/efsw/FileWatcherImpl.hpp + src/efsw/Lock.hpp + src/efsw/Mutex.hpp + src/efsw/sophist.h + src/efsw/String.hpp + src/efsw/System.hpp + src/efsw/Thread.hpp + src/efsw/Utf.hpp + src/efsw/Watcher.hpp + src/efsw/WatcherGeneric.hpp + src/efsw/platform/platformimpl.hpp + src/efsw/platform/${efsw_platform_dir}/FileSystemImpl.hpp + src/efsw/platform/${efsw_platform_dir}/SystemImpl.hpp) + +if (APPLE) target_sources(efsw PRIVATE - src/efsw/Debug.cpp - src/efsw/DirectorySnapshot.cpp - src/efsw/DirectorySnapshotDiff.cpp - src/efsw/DirWatcherGeneric.cpp - src/efsw/FileInfo.cpp - src/efsw/FileSystem.cpp - src/efsw/FileWatcher.cpp - src/efsw/FileWatcherCWrapper.cpp - src/efsw/FileWatcherGeneric.cpp - src/efsw/FileWatcherImpl.cpp - src/efsw/Log.cpp - src/efsw/String.cpp - src/efsw/System.cpp - src/efsw/Watcher.cpp - src/efsw/WatcherGeneric.cpp - src/efsw/platform/${efsw_platform_dir}/FileSystemImpl.cpp - src/efsw/platform/${efsw_platform_dir}/SystemImpl.cpp) - + src/efsw/FileWatcherFSEvents.cpp + src/efsw/FileWatcherKqueue.cpp + src/efsw/WatcherFSEvents.cpp + src/efsw/WatcherKqueue.cpp) target_sources(efsw - PUBLIC - FILE_SET HEADERS - BASE_DIRS include + PRIVATE + FILE_SET efsw_private_headers + TYPE HEADERS + BASE_DIRS src FILES - include/efsw/efsw.h - include/efsw/efsw.hpp) - + src/efsw/FileWatcherFSEvents.hpp + src/efsw/FileWatcherKqueue.hpp + src/efsw/WatcherFSEvents.hpp + src/efsw/WatcherKqueue.hpp) + target_link_libraries(efsw + PRIVATE + $<LINK_LIBRARY:FRAMEWORK,CoreFoundation> + $<LINK_LIBRARY:FRAMEWORK,CoreServices>) +elseif (WIN32) + target_sources(efsw + PRIVATE + src/efsw/FileWatcherWin32.cpp + src/efsw/WatcherWin32.cpp) target_sources(efsw PRIVATE FILE_SET efsw_private_headers TYPE HEADERS BASE_DIRS src FILES - src/efsw/Atomic.hpp - src/efsw/base.hpp - src/efsw/Debug.hpp - src/efsw/DirectorySnapshot.hpp - src/efsw/DirectorySnapshotDiff.hpp - src/efsw/DirWatcherGeneric.hpp - src/efsw/FileInfo.hpp - src/efsw/FileSystem.hpp - src/efsw/FileWatcherGeneric.hpp - src/efsw/FileWatcherImpl.hpp - src/efsw/Lock.hpp - src/efsw/Mutex.hpp - src/efsw/sophist.h - src/efsw/String.hpp - src/efsw/System.hpp - src/efsw/Thread.hpp - src/efsw/Utf.hpp - src/efsw/Watcher.hpp - src/efsw/WatcherGeneric.hpp - src/efsw/platform/platformimpl.hpp - src/efsw/platform/${efsw_platform_dir}/FileSystemImpl.hpp - src/efsw/platform/${efsw_platform_dir}/SystemImpl.hpp) - - if (APPLE) - target_sources(efsw - PRIVATE - src/efsw/FileWatcherFSEvents.cpp - src/efsw/FileWatcherKqueue.cpp - src/efsw/WatcherFSEvents.cpp - src/efsw/WatcherKqueue.cpp) - target_sources(efsw - PRIVATE - FILE_SET efsw_private_headers - TYPE HEADERS - BASE_DIRS src - FILES - src/efsw/FileWatcherFSEvents.hpp - src/efsw/FileWatcherKqueue.hpp - src/efsw/WatcherFSEvents.hpp - src/efsw/WatcherKqueue.hpp) - target_link_libraries(efsw - PRIVATE - $<LINK_LIBRARY:FRAMEWORK,CoreFoundation> - $<LINK_LIBRARY:FRAMEWORK,CoreServices>) - elseif (WIN32) - target_sources(efsw - PRIVATE - src/efsw/FileWatcherWin32.cpp - src/efsw/WatcherWin32.cpp) - target_sources(efsw - PRIVATE - FILE_SET efsw_private_headers - TYPE HEADERS - BASE_DIRS src - FILES - src/efsw/FileWatcherWin32.hpp - src/efsw/WatcherWin32.hpp) - elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") - target_sources(efsw - PRIVATE - src/efsw/FileWatcherInotify.cpp - src/efsw/WatcherInotify.cpp) - target_sources(efsw - PRIVATE - FILE_SET efsw_private_headers - TYPE HEADERS - BASE_DIRS src - FILES - src/efsw/FileWatcherInotify.hpp - src/efsw/WatcherInotify.hpp) - find_path(EFSW_INOTIFY_H - NAMES - sys/inotify.h - NO_CACHE + src/efsw/FileWatcherWin32.hpp + src/efsw/WatcherWin32.hpp) +elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") + target_sources(efsw + PRIVATE + src/efsw/FileWatcherInotify.cpp + src/efsw/WatcherInotify.cpp) + target_sources(efsw + PRIVATE + FILE_SET efsw_private_headers + TYPE HEADERS + BASE_DIRS src + FILES + src/efsw/FileWatcherInotify.hpp + src/efsw/WatcherInotify.hpp) + find_path(EFSW_INOTIFY_H + NAMES + sys/inotify.h + NO_CACHE + ) + if (EFSW_INOTIFY_H STREQUAL "EFSW_INOTIFY_H-NOTFOUND") + list (APPEND EFSW_CPP_SOURCE + src/efsw/inotify-nosys.h ) - if (EFSW_INOTIFY_H STREQUAL "EFSW_INOTIFY_H-NOTFOUND") - list (APPEND EFSW_CPP_SOURCE - src/efsw/inotify-nosys.h - ) - target_compile_definitions(efsw - PRIVATE - EFSW_INOTIFY_NOSYS) - endif() - elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") - target_sources(efsw - PRIVATE - src/efsw/FileWatcherKqueue.cpp - src/efsw/WatcherKqueue.cpp) - target_sources(efsw + target_compile_definitions(efsw PRIVATE - FILE_SET efsw_private_headers - TYPE HEADERS - BASE_DIRS src - FILES - src/efsw/FileWatcherKqueue.hpp - src/efsw/WatcherKqueue.hpp) + EFSW_INOTIFY_NOSYS) endif() - - target_link_libraries(efsw +elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") + target_sources(efsw + PRIVATE + src/efsw/FileWatcherKqueue.cpp + src/efsw/WatcherKqueue.cpp) + target_sources(efsw PRIVATE - trinity-dependency-interface - PUBLIC - threads) + FILE_SET efsw_private_headers + TYPE HEADERS + BASE_DIRS src + FILES + src/efsw/FileWatcherKqueue.hpp + src/efsw/WatcherKqueue.hpp) +endif() + +target_link_libraries(efsw + PRIVATE + trinity-dependency-interface + PUBLIC + threads) - set_target_properties(efsw - PROPERTIES - FOLDER - "dep") -else () - add_library(efsw INTERFACE IMPORTED GLOBAL) -endif () +set_target_properties(efsw + PROPERTIES + FOLDER + "dep") diff --git a/src/server/game/CMakeLists.txt b/src/server/game/CMakeLists.txt index ab35bd74d94..3236af94485 100644 --- a/src/server/game/CMakeLists.txt +++ b/src/server/game/CMakeLists.txt @@ -44,10 +44,15 @@ target_include_directories(game target_link_libraries(game PRIVATE trinity-core-interface - efsw PUBLIC game-interface) +if(TARGET efsw) + target_link_libraries(game + PRIVATE + efsw) +endif() + set_target_properties(game PROPERTIES COMPILE_WARNING_AS_ERROR ${WITH_WARNINGS_AS_ERRORS} |
