File: CMakeLists.txt

package info (click to toggle)
actor-framework 0.17.6-2
  • links: PTS
  • area: main
  • in suites: bullseye
  • size: 8,932 kB
  • sloc: cpp: 77,681; sh: 674; python: 309; makefile: 13
file content (134 lines) | stat: -rw-r--r-- 4,799 bytes parent folder | download | duplicates (4)
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
project(caf_examples CXX)

add_custom_target(all_examples)

include_directories(${CAF_INCLUDE_DIRS})

macro(add folder name)
  add_executable(${name} ${folder}/${name}.cpp ${ARGN})
  target_link_libraries(${name}
                        ${CAF_EXTRA_LDFLAGS}
                        ${CAF_LIBRARIES}
                        ${PTHREAD_LIBRARIES})
  install(FILES ${folder}/${name}.cpp DESTINATION ${CMAKE_INSTALL_DATADIR}/caf/examples/${folder})
  add_dependencies(${name} all_examples)
endmacro()

# introductionary applications
add(. aout)
add(. hello_world)

# basic message passing primitives
add(message_passing calculator)
add(message_passing cell)
add(message_passing dancing_kirby)
add(message_passing delegating)
add(message_passing divider)
add(message_passing fixed_stack)
add(message_passing promises)
add(message_passing request)
add(message_passing typed_calculator)

# streaming API
add(streaming integer_stream)

# dynamic behavior changes using 'become'
add(dynamic_behavior skip_messages)
add(dynamic_behavior dining_philosophers)

# composing actors using states or other actors
add(composition calculator_behavior)
add(composition dictionary_behavior)

# adding custom message types
add(custom_type custom_types_1)
add(custom_type custom_types_2)
add(custom_type custom_types_3)

# basic remoting
add(remoting group_chat)
add(remoting group_server)
add(remoting remote_spawn)
add(remoting distributed_calculator)

# basic I/O with brokers
add(broker simple_broker)
add(broker simple_http_broker)

# testing DSL
add(testing ping_pong)

if(CAF_BUILD_PROTOBUF_EXAMPLES)
  find_package(Protobuf)
  if(PROTOBUF_FOUND AND PROTOBUF_PROTOC_EXECUTABLE)
    PROTOBUF_GENERATE_CPP(ProtoSources ProtoHeaders "${CMAKE_CURRENT_SOURCE_DIR}/remoting/pingpong.proto")
    include_directories(${PROTOBUF_INCLUDE_DIR})
    # add binary dir as include path as generated headers will be located there
    include_directories(${CMAKE_CURRENT_BINARY_DIR})
    add_executable(protobuf_broker broker/protobuf_broker.cpp ${ProtoSources})
    target_link_libraries(protobuf_broker ${CMAKE_DL_LIBS} ${CAF_LIBRARIES} ${PTHREAD_LIBRARIES} ${PROTOBUF_LIBRARIES})
    add_dependencies(protobuf_broker all_examples)
  endif(PROTOBUF_FOUND AND PROTOBUF_PROTOC_EXECUTABLE)
endif()

if(CAF_BUILD_QT_EXAMPLES)
  find_package(Qt5 COMPONENTS Core Gui Widgets QUIET)
  if(Qt5_FOUND)
    message(STATUS "Found Qt5")
    #include(${QT_USE_FILE})
    QT5_ADD_RESOURCES(GROUP_CHAT_RCS )
    QT5_WRAP_UI(GROUP_CHAT_UI_HDR qtsupport/chatwindow.ui)
    QT5_WRAP_CPP(GROUP_CHAT_MOC_SRC qtsupport/chatwidget.hpp)
    # generated headers will be in cmake build directory
    #include_directories(. qtsupport ${CMAKE_CURRENT_BINARY_DIR} ${CPPA_INCLUDE})
    include_directories(qtsupport
                        ${CMAKE_CURRENT_BINARY_DIR}
                        ${Qt5Core_INCLUDE_DIRS}
                        ${Qt5Gui_INCLUDE_DIRS}
                        ${Qt5Widgets_INCLUDE_DIRS})
    set(GROUP_CHAT_SRC qtsupport/qt_group_chat.cpp qtsupport/chatwidget.cpp)
    add_executable(qt_group_chat
                   ${GROUP_CHAT_SRC}
                   ${GROUP_CHAT_MOC_SRC}
                   ${GROUP_CHAT_UI_HDR})
    target_link_libraries(qt_group_chat
                          ${CMAKE_DL_LIBS}
                          ${CAF_LIBRARIES}
                          Qt5::Core
                          Qt5::Gui
                          Qt5::Widgets)
    add_dependencies(qt_group_chat all_examples)
  else()
    find_package(Qt4)
    if(QT4_FOUND)
      message(STATUS "Found Qt4")
      include(${QT_USE_FILE})
      QT4_ADD_RESOURCES(GROUP_CHAT_RCS )
      QT4_WRAP_UI(GROUP_CHAT_UI_HDR qtsupport/chatwindow.ui)
      QT4_WRAP_CPP(GROUP_CHAT_MOC_SRC qtsupport/chatwidget.hpp)
      # generated headers will be in cmake build directory
      #include_directories(. qtsupport ${CMAKE_CURRENT_BINARY_DIR} ${CPPA_INCLUDE})
      include_directories(qtsupport ${CMAKE_CURRENT_BINARY_DIR})
      set(GROUP_CHAT_SRCS qtsupport/qt_group_chat.cpp qtsupport/chatwidget.cpp)
      add_executable(qt_group_chat
                     ${GROUP_CHAT_SRCS}
                     ${GROUP_CHAT_MOC_SRC}
                     ${GROUP_CHAT_UI_HDR})
      target_link_libraries(qt_group_chat
                            ${CMAKE_DL_LIBS}
                            ${CAF_LIBRARIES}
                            ${QT_LIBRARIES})
      add_dependencies(qt_group_chat all_examples)
    endif()
  endif()
endif()

if(NOT CAF_NO_CURL_EXAMPLES)
  find_package(CURL)
  if(CURL_FOUND)
    add_executable(curl_fuse curl/curl_fuse.cpp)
    include_directories(${CURL_INCLUDE_DIRS})
    target_link_libraries(curl_fuse ${CMAKE_DL_LIBS} ${CAF_LIBRARIES} ${PTHREAD_LIBRARIES} ${CURL_LIBRARY})
    add_dependencies(curl_fuse all_examples)
  endif(CURL_FOUND)
endif()