summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/ioprocessor/CMakeLists.txt
blob: 0fab6a4d3a6ea858f130b1a99ba07d7fb9bac12b (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
# LIBEVENT basichttp ioprocessor - this one is already required above

file(GLOB_RECURSE BASICHTTP_IOPROCESSOR
	basichttp/*.cpp
	basichttp/*.h
)
source_group("IOProcessor\\basichttp" FILES ${BASICHTTP_IOPROCESSOR})
if (BUILD_AS_PLUGINS)
	add_library(
		ioprocessor_basichttp SHARED 
		${BASICHTTP_IOPROCESSOR})
	target_link_libraries(ioprocessor_basichttp uscxml)
	set_target_properties(ioprocessor_basichttp PROPERTIES FOLDER "Plugin IOProcessor")
else()
	list (APPEND USCXML_FILES ${BASICHTTP_IOPROCESSOR})
endif()


# scxml ioprocessor - this one is already required above

file(GLOB_RECURSE SCXML_IOPROCESSOR
	scxml/*.cpp
	scxml/*.h
)
source_group("IOProcessor\\scxml" FILES ${SCXML_IOPROCESSOR})
if (BUILD_AS_PLUGINS)
	add_library(
		ioprocessor_scxml SHARED 
		${SCXML_IOPROCESSOR})
	target_link_libraries(ioprocessor_scxml uscxml)
	set_target_properties(ioprocessor_scxml PROPERTIES FOLDER "Plugin IOProcessor")
else()
	list (APPEND USCXML_FILES ${SCXML_IOPROCESSOR})
endif()


# mmi ioprocessor

if (PROTOBUF_FOUND)

	if (NOT PROTOBUF_PROTOC_EXECUTABLE)
		message(FATAL_ERROR "protoc binary required for serialization")
	endif()

	file(GLOB_RECURSE MMI_IOPROCESSOR
		modality/*.cpp
		modality/*.h
	)

	# process .proto files
	file(GLOB_RECURSE PROTOBUF_INTERFACES ${PROJECT_SOURCE_DIR}/contrib/proto/*.proto)
	list (APPEND USCXML_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR})

	PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS ${PROTOBUF_INTERFACES})
#	set_source_files_properties(${PROTO_SRCS} ${PROTO_HDRS} PROPERTIES GENERATED TRUE)

	# this needs to be here for dependencies on the generated proto files
	add_library(mmi_proto STATIC ${PROTO_SRCS})
	set_target_properties(mmi_proto PROPERTIES FOLDER "Generated")

	source_group("IOProcessor\\modality" FILES ${MMI_IOPROCESSOR})
	if (BUILD_AS_PLUGINS)
		add_library(
			ioprocessor_mmi SHARED 
			${MMI_IOPROCESSOR})
		target_link_libraries(ioprocessor_mmi uscxml mmi_proto)
		set_target_properties(ioprocessor_mmi PROPERTIES FOLDER "Plugin IOProcessor")
	else()
		list (APPEND USCXML_FILES ${MMI_IOPROCESSOR})
		list (APPEND USCXML_OPT_LIBS mmi_proto)
	endif()
endif()

set(USCXML_INCLUDE_DIRS ${USCXML_INCLUDE_DIRS} PARENT_SCOPE)
set(USCXML_OPT_LIBS ${USCXML_OPT_LIBS} PARENT_SCOPE)
set(USCXML_FILES ${USCXML_FILES} PARENT_SCOPE)