aboutsummaryrefslogtreecommitdiff
path: root/dep/efsw/CMakeLists.txt
blob: eecc5531944702abd645500bce726a464c49a7c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
if (BUILD_SHARED_LIBS)
  set(SRCS
    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/Mutex.cpp
    src/efsw/String.cpp
    src/efsw/System.cpp
    src/efsw/Thread.cpp
    src/efsw/Watcher.cpp
    src/efsw/WatcherGeneric.cpp)

  if(WIN32)
    list(APPEND SRCS
      src/efsw/platform/win/FileSystemImpl.cpp
      src/efsw/platform/win/MutexImpl.cpp
      src/efsw/platform/win/SystemImpl.cpp
      src/efsw/platform/win/ThreadImpl.cpp)
  else()
    list(APPEND SRCS
      src/efsw/platform/posix/FileSystemImpl.cpp
      src/efsw/platform/posix/MutexImpl.cpp
      src/efsw/platform/posix/SystemImpl.cpp
      src/efsw/platform/posix/ThreadImpl.cpp)
  endif()

  if (WIN32)
    list(APPEND SRCS
      src/efsw/WatcherWin32.cpp
      src/efsw/FileWatcherWin32.cpp)
  elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
    list(APPEND SRCS
      src/efsw/FileWatcherInotify.cpp
      src/efsw/WatcherInotify.cpp)

    if (NOT EXISTS "/usr/include/sys/inotify.h" AND NOT EXISTS "/usr/local/include/sys/inotify.h")
      add_definitions(-DEFSW_INOTIFY_NOSYS)
    endif()
  elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR APPLE)
    list(APPEND SRCS
      src/efsw/FileWatcherKqueue.cpp
      src/efsw/WatcherKqueue.cpp)

    if (APPLE)
      list(APPEND SRCS
        src/efsw/FileWatcherFSEvents.cpp
        src/efsw/WatcherFSEvents.cpp)

      exec_program(uname ARGS -v  OUTPUT_VARIABLE OSX_VERSION)
      string(REGEX MATCH "[0-9]+" OSX_VERSION ${OSX_VERSION})
      if (NOT OSX_VERSION GREATER 9)
        add_definitions(-DEFSW_FSEVENTS_NOT_SUPPORTED)
      endif()

      set(OPTIONAL_MAC_LINK_LIBRARIES "-framework CoreFoundation" "-framework CoreServices")
    endif()
  endif()

  add_library(efsw STATIC ${SRCS})

  target_include_directories(efsw
    PUBLIC
      ${CMAKE_CURRENT_SOURCE_DIR}/include
    PRIVATE
      ${CMAKE_CURRENT_SOURCE_DIR}/src)

  target_link_libraries(efsw
    PUBLIC
      threads
      ${OPTIONAL_MAC_LINK_LIBRARIES})

  set_target_properties(efsw
    PROPERTIES
      FOLDER
        "dep")
else()
  add_library(efsw INTERFACE IMPORTED GLOBAL)
endif()