
include_parent_directories()

if (HAVE_SYS_TYPES_H AND HAVE_SYS_TIME_H AND HAVE_SYS_EVENT_H)
cxx_library_static(cm_event "cm_thread"
    cm_event_kqueue.cpp
)
endif (HAVE_SYS_TYPES_H AND HAVE_SYS_TIME_H AND HAVE_SYS_EVENT_H)

if (HAVE_SYS_EPOLL_H)
cxx_library_static(cm_event "cm_thread"
    cm_event_epoll.cpp
)
endif (HAVE_SYS_EPOLL_H)

cxx_library_static(cm_thread "pthread"
  cm_thread.cpp
  cm_mutex.cpp
  cm_condition.cpp
)

cxx_library_static(cm_socket ""
  cm_socket_server.cpp
  cm_socket_client.cpp
  cm_socket.cpp
  cm_vector_socket.cpp
)

cxx_library_static(cm_main ""
  cm_main.cpp
)

gmock_executable(cm_thread_test "cm_thread"
  test/cm_thread_test.cpp
  test/cm_mutex_test.cpp
  test/cm_thread_specific_data_test.cpp
  test/cm_condition_test.cpp
)

gmock_executable(cm_event_test "cm_event"
  test/cm_event_test.cpp
)

gmock_executable(cm_socket_server_test "cm_socket;cm_event"
  test/cm_socket_server_client_test.cpp
)

gmock_executable(cm_vector_socket_test "cm_socket;"
  test/cm_vector_socket_test.cpp
)

gmock_executable(cm_thread_event_driven_test "cm_socket;cm_thread;cm_event"
  test/cm_thread_event_driven_test.cpp
)

cxx_executable(cm_main_test ""
  test/cm_main_sample.cpp
)

enable_coverage()

