1d4afb5ceSopenharmony_ci#
2d4afb5ceSopenharmony_ci# libwebsockets - small server side websockets and web server implementation
3d4afb5ceSopenharmony_ci#
4d4afb5ceSopenharmony_ci# Copyright (C) 2010 - 2020 Andy Green <andy@warmcat.com>
5d4afb5ceSopenharmony_ci#
6d4afb5ceSopenharmony_ci# Permission is hereby granted, free of charge, to any person obtaining a copy
7d4afb5ceSopenharmony_ci# of this software and associated documentation files (the "Software"), to
8d4afb5ceSopenharmony_ci# deal in the Software without restriction, including without limitation the
9d4afb5ceSopenharmony_ci# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10d4afb5ceSopenharmony_ci# sell copies of the Software, and to permit persons to whom the Software is
11d4afb5ceSopenharmony_ci# furnished to do so, subject to the following conditions:
12d4afb5ceSopenharmony_ci#
13d4afb5ceSopenharmony_ci# The above copyright notice and this permission notice shall be included in
14d4afb5ceSopenharmony_ci# all copies or substantial portions of the Software.
15d4afb5ceSopenharmony_ci#
16d4afb5ceSopenharmony_ci# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17d4afb5ceSopenharmony_ci# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18d4afb5ceSopenharmony_ci# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19d4afb5ceSopenharmony_ci# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20d4afb5ceSopenharmony_ci# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21d4afb5ceSopenharmony_ci# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22d4afb5ceSopenharmony_ci# IN THE SOFTWARE.
23d4afb5ceSopenharmony_ci#
24d4afb5ceSopenharmony_ci
25d4afb5ceSopenharmony_ciinclude_directories(.)
26d4afb5ceSopenharmony_ci
27d4afb5ceSopenharmony_ciif (LWS_WITH_CLIENT)
28d4afb5ceSopenharmony_ci	list(APPEND SOURCES
29d4afb5ceSopenharmony_ci			secure-streams/secure-streams.c
30d4afb5ceSopenharmony_ci			secure-streams/policy-common.c
31d4afb5ceSopenharmony_ci			secure-streams/system/captive-portal-detect/captive-portal-detect.c
32d4afb5ceSopenharmony_ci			secure-streams/protocols/ss-raw.c
33d4afb5ceSopenharmony_ci		)
34d4afb5ceSopenharmony_ci		if (NOT LWS_WITH_SECURE_STREAMS_STATIC_POLICY_ONLY)
35d4afb5ceSopenharmony_ci			list(APPEND SOURCES
36d4afb5ceSopenharmony_ci				secure-streams/policy-json.c
37d4afb5ceSopenharmony_ci				secure-streams/system/fetch-policy/fetch-policy.c
38d4afb5ceSopenharmony_ci			)
39d4afb5ceSopenharmony_ci		endif()
40d4afb5ceSopenharmony_ci		if (LWS_ROLE_H1)
41d4afb5ceSopenharmony_ci			list(APPEND SOURCES
42d4afb5ceSopenharmony_ci				secure-streams/protocols/ss-h1.c
43d4afb5ceSopenharmony_ci			)
44d4afb5ceSopenharmony_ci		endif()
45d4afb5ceSopenharmony_ci		if (LWS_ROLE_H2)
46d4afb5ceSopenharmony_ci			list(APPEND SOURCES
47d4afb5ceSopenharmony_ci				secure-streams/protocols/ss-h2.c
48d4afb5ceSopenharmony_ci			)
49d4afb5ceSopenharmony_ci		endif()
50d4afb5ceSopenharmony_ci		if (LWS_ROLE_WS)
51d4afb5ceSopenharmony_ci			list(APPEND SOURCES
52d4afb5ceSopenharmony_ci				secure-streams/protocols/ss-ws.c
53d4afb5ceSopenharmony_ci			)
54d4afb5ceSopenharmony_ci		endif()
55d4afb5ceSopenharmony_ci		if (LWS_ROLE_MQTT)
56d4afb5ceSopenharmony_ci			list(APPEND SOURCES
57d4afb5ceSopenharmony_ci				secure-streams/protocols/ss-mqtt.c
58d4afb5ceSopenharmony_ci			)
59d4afb5ceSopenharmony_ci		endif()
60d4afb5ceSopenharmony_ci
61d4afb5ceSopenharmony_ci		if (LWS_WITH_SECURE_STREAMS_PROXY_API)
62d4afb5ceSopenharmony_ci			list(APPEND SOURCES
63d4afb5ceSopenharmony_ci				secure-streams/secure-streams-serialize.c
64d4afb5ceSopenharmony_ci				secure-streams/secure-streams-client.c
65d4afb5ceSopenharmony_ci			)
66d4afb5ceSopenharmony_ci		endif()
67d4afb5ceSopenharmony_ci
68d4afb5ceSopenharmony_ci		if (LWS_WITH_SECURE_STREAMS_PROXY_API)
69d4afb5ceSopenharmony_ci			list(APPEND SOURCES
70d4afb5ceSopenharmony_ci				secure-streams/secure-streams-process.c
71d4afb5ceSopenharmony_ci			)
72d4afb5ceSopenharmony_ci		endif()
73d4afb5ceSopenharmony_ci
74d4afb5ceSopenharmony_ci		if (LWS_WITH_SECURE_STREAMS_SYS_AUTH_API_AMAZON_COM AND
75d4afb5ceSopenharmony_ci		    LWS_WITH_SYS_STATE)
76d4afb5ceSopenharmony_ci			list(APPEND SOURCES
77d4afb5ceSopenharmony_ci				secure-streams/system/auth-api.amazon.com/auth.c
78d4afb5ceSopenharmony_ci			)
79d4afb5ceSopenharmony_ci		endif()
80d4afb5ceSopenharmony_ci
81d4afb5ceSopenharmony_ci		if (LWS_WITH_SECURE_STREAMS_AUTH_SIGV4)
82d4afb5ceSopenharmony_ci			list(APPEND SOURCES
83d4afb5ceSopenharmony_ci				secure-streams/system/auth-sigv4/sign.c
84d4afb5ceSopenharmony_ci			)
85d4afb5ceSopenharmony_ci		endif()
86d4afb5ceSopenharmony_ci
87d4afb5ceSopenharmony_ci
88d4afb5ceSopenharmony_ci		if (LWS_WITH_SECURE_STREAMS_CPP)
89d4afb5ceSopenharmony_ci			list(APPEND SOURCES secure-streams/cpp/lss.cxx)
90d4afb5ceSopenharmony_ci
91d4afb5ceSopenharmony_ci			if (LWS_ROLE_H1 OR LWS_ROLE_H2)
92d4afb5ceSopenharmony_ci				list(APPEND SOURCES secure-streams/cpp/lssFile.cxx)
93d4afb5ceSopenharmony_ci			endif()
94d4afb5ceSopenharmony_ci
95d4afb5ceSopenharmony_ci			if (LWS_ROLE_WS)
96d4afb5ceSopenharmony_ci				list(APPEND SOURCES secure-streams/cpp/lssMsg.cxx)
97d4afb5ceSopenharmony_ci			endif()
98d4afb5ceSopenharmony_ci		endif()
99d4afb5ceSopenharmony_ci
100d4afb5ceSopenharmony_ci	#
101d4afb5ceSopenharmony_ci	# Helper function for adding a secure stream plugin
102d4afb5ceSopenharmony_ci	#
103d4afb5ceSopenharmony_ci	macro(create_ss_plugin NAME S2 S3 S4 S5 S6)
104d4afb5ceSopenharmony_ci
105d4afb5ceSopenharmony_ci		set(SSP_SRCS)
106d4afb5ceSopenharmony_ci		set(SSP_PUBLIC_HDR)
107d4afb5ceSopenharmony_ci		set(SSP_HDR)
108d4afb5ceSopenharmony_ci
109d4afb5ceSopenharmony_ci		if ("${S2}" STREQUAL "")
110d4afb5ceSopenharmony_ci		else()
111d4afb5ceSopenharmony_ci			list(APPEND SSP_SRCS plugins/${NAME}/${S2})
112d4afb5ceSopenharmony_ci		endif()
113d4afb5ceSopenharmony_ci		if ("${S3}" STREQUAL "")
114d4afb5ceSopenharmony_ci		else()
115d4afb5ceSopenharmony_ci			list(APPEND SSP_SRCS plugins/${NAME}/${S3})
116d4afb5ceSopenharmony_ci		endif()
117d4afb5ceSopenharmony_ci		if ("${S4}" STREQUAL "")
118d4afb5ceSopenharmony_ci		else()
119d4afb5ceSopenharmony_ci			list(APPEND SSP_SRCS plugins/${NAME}/${S4})
120d4afb5ceSopenharmony_ci		endif()
121d4afb5ceSopenharmony_ci		if ("${S5}" STREQUAL "")
122d4afb5ceSopenharmony_ci		else()
123d4afb5ceSopenharmony_ci			list(APPEND SSP_SRCS plugins/${NAME}/${S5})
124d4afb5ceSopenharmony_ci		endif()
125d4afb5ceSopenharmony_ci		if ("${S6}" STREQUAL "")
126d4afb5ceSopenharmony_ci		else()
127d4afb5ceSopenharmony_ci			list(APPEND SSP_SRCS plugins/${NAME}/${S6})
128d4afb5ceSopenharmony_ci		endif()
129d4afb5ceSopenharmony_ci
130d4afb5ceSopenharmony_ci		source_group("Headers Private"  FILES ${SSP_HDR})
131d4afb5ceSopenharmony_ci		source_group("Sources"		FILES ${SSP_SRCS})
132d4afb5ceSopenharmony_ci
133d4afb5ceSopenharmony_ci		add_library( ${NAME} STATIC
134d4afb5ceSopenharmony_ci			     ${SSP_HDR} ${SSP_PUBLIC_HDR} ${SSP_SRCS} )
135d4afb5ceSopenharmony_ci
136d4afb5ceSopenharmony_ci		target_include_directories(${NAME} PRIVATE "${LWS_LIB_INCLUDES}" ${LWS_LIB_BUILD_INC_PATHS})
137d4afb5ceSopenharmony_ci
138d4afb5ceSopenharmony_ci		if (NOT LWS_PLAT_FREERTOS)
139d4afb5ceSopenharmony_ci	                add_dependencies(${NAME} websockets_shared)
140d4afb5ceSopenharmony_ci		endif()
141d4afb5ceSopenharmony_ci		list(APPEND SS_PLUGINS_LIST ${NAME})
142d4afb5ceSopenharmony_ci	endmacro()
143d4afb5ceSopenharmony_ci
144d4afb5ceSopenharmony_ci	#	create_ss_plugin(ssp-h1url "h1url.c" "" "" "" "")
145d4afb5ceSopenharmony_ciendif()
146d4afb5ceSopenharmony_ci
147d4afb5ceSopenharmony_ci#
148d4afb5ceSopenharmony_ci# Keep explicit parent scope exports at end
149d4afb5ceSopenharmony_ci#
150d4afb5ceSopenharmony_ci
151d4afb5ceSopenharmony_ciexports_to_parent_scope()
152