add_library(efsw STATIC) 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/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 $ $) 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 ) 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 PRIVATE 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")