xref: /aosp_15_r20/external/libwebsockets/plugins/CMakeLists.txt (revision 1c60b9aca93fdbc9b5f19b2d2194c91294b22281)
1*1c60b9acSAndroid Build Coastguard Worker#
2*1c60b9acSAndroid Build Coastguard Worker# libwebsockets - small server side websockets and web server implementation
3*1c60b9acSAndroid Build Coastguard Worker#
4*1c60b9acSAndroid Build Coastguard Worker# Copyright (C) 2010 - 2021 Andy Green <[email protected]>
5*1c60b9acSAndroid Build Coastguard Worker#
6*1c60b9acSAndroid Build Coastguard Worker# Permission is hereby granted, free of charge, to any person obtaining a copy
7*1c60b9acSAndroid Build Coastguard Worker# of this software and associated documentation files (the "Software"), to
8*1c60b9acSAndroid Build Coastguard Worker# deal in the Software without restriction, including without limitation the
9*1c60b9acSAndroid Build Coastguard Worker# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10*1c60b9acSAndroid Build Coastguard Worker# sell copies of the Software, and to permit persons to whom the Software is
11*1c60b9acSAndroid Build Coastguard Worker# furnished to do so, subject to the following conditions:
12*1c60b9acSAndroid Build Coastguard Worker#
13*1c60b9acSAndroid Build Coastguard Worker# The above copyright notice and this permission notice shall be included in
14*1c60b9acSAndroid Build Coastguard Worker# all copies or substantial portions of the Software.
15*1c60b9acSAndroid Build Coastguard Worker#
16*1c60b9acSAndroid Build Coastguard Worker# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17*1c60b9acSAndroid Build Coastguard Worker# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18*1c60b9acSAndroid Build Coastguard Worker# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19*1c60b9acSAndroid Build Coastguard Worker# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20*1c60b9acSAndroid Build Coastguard Worker# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21*1c60b9acSAndroid Build Coastguard Worker# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22*1c60b9acSAndroid Build Coastguard Worker# IN THE SOFTWARE.
23*1c60b9acSAndroid Build Coastguard Worker#
24*1c60b9acSAndroid Build Coastguard Worker
25*1c60b9acSAndroid Build Coastguard Workerinclude_directories(.)
26*1c60b9acSAndroid Build Coastguard Worker
27*1c60b9acSAndroid Build Coastguard Workerif (DEFINED LIB_LIST_AT_END)
28*1c60b9acSAndroid Build Coastguard Workerlink_libraries(${LIB_LIST_AT_END})
29*1c60b9acSAndroid Build Coastguard Workerendif()
30*1c60b9acSAndroid Build Coastguard Worker
31*1c60b9acSAndroid Build Coastguard Workerif ((LWS_WITH_PLUGINS AND LWS_WITH_SHARED) OR LWS_WITH_PLUGINS_BUILTIN)
32*1c60b9acSAndroid Build Coastguard Worker
33*1c60b9acSAndroid Build Coastguard Worker	#
34*1c60b9acSAndroid Build Coastguard Worker	# Either build the plugins as separate dynamic libs (LWS_WITH_PLUGINS)
35*1c60b9acSAndroid Build Coastguard Worker	# or build into the main lws library (LWS_WITH_PLUGINS_BUILTIN)
36*1c60b9acSAndroid Build Coastguard Worker	#
37*1c60b9acSAndroid Build Coastguard Worker
38*1c60b9acSAndroid Build Coastguard Worker	macro(create_plugin PLUGIN_NAME PLUGIN_INCLUDE MAIN_SRC S2 S3)
39*1c60b9acSAndroid Build Coastguard Worker
40*1c60b9acSAndroid Build Coastguard Worker		if (NOT LWS_WITH_PLUGINS_BUILTIN)
41*1c60b9acSAndroid Build Coastguard Worker			set(PLUGIN_SRCS ${MAIN_SRC})
42*1c60b9acSAndroid Build Coastguard Worker
43*1c60b9acSAndroid Build Coastguard Worker			if ("${S2}" STREQUAL "")
44*1c60b9acSAndroid Build Coastguard Worker			else()
45*1c60b9acSAndroid Build Coastguard Worker				list(APPEND PLUGIN_SRCS ${S2})
46*1c60b9acSAndroid Build Coastguard Worker			endif()
47*1c60b9acSAndroid Build Coastguard Worker			if ("${S3}" STREQUAL "")
48*1c60b9acSAndroid Build Coastguard Worker			else()
49*1c60b9acSAndroid Build Coastguard Worker				list(APPEND PLUGIN_SRCS ${S3})
50*1c60b9acSAndroid Build Coastguard Worker			endif()
51*1c60b9acSAndroid Build Coastguard Worker
52*1c60b9acSAndroid Build Coastguard Worker			if (WIN32)
53*1c60b9acSAndroid Build Coastguard Worker				list(APPEND PLUGIN_SRCS
54*1c60b9acSAndroid Build Coastguard Worker					${WIN32_HELPERS_PATH}/getopt.c
55*1c60b9acSAndroid Build Coastguard Worker					${WIN32_HELPERS_PATH}/getopt_long.c
56*1c60b9acSAndroid Build Coastguard Worker					${WIN32_HELPERS_PATH}/gettimeofday.c
57*1c60b9acSAndroid Build Coastguard Worker				)
58*1c60b9acSAndroid Build Coastguard Worker
59*1c60b9acSAndroid Build Coastguard Worker				list(APPEND PLUGIN_HDR
60*1c60b9acSAndroid Build Coastguard Worker					${WIN32_HELPERS_PATH}/getopt.h
61*1c60b9acSAndroid Build Coastguard Worker					${WIN32_HELPERS_PATH}/gettimeofday.h
62*1c60b9acSAndroid Build Coastguard Worker				)
63*1c60b9acSAndroid Build Coastguard Worker			endif(WIN32)
64*1c60b9acSAndroid Build Coastguard Worker
65*1c60b9acSAndroid Build Coastguard Worker			source_group("Headers Private"   FILES ${PLUGIN_HDR})
66*1c60b9acSAndroid Build Coastguard Worker			source_group("Sources"   FILES ${PLUGIN_SRCS})
67*1c60b9acSAndroid Build Coastguard Worker			add_library(${PLUGIN_NAME} SHARED ${PLUGIN_SRCS} ${PLUGIN_HDR})
68*1c60b9acSAndroid Build Coastguard Worker			target_link_libraries(${PLUGIN_NAME} websockets_shared)
69*1c60b9acSAndroid Build Coastguard Worker			add_dependencies(${PLUGIN_NAME} websockets_shared)
70*1c60b9acSAndroid Build Coastguard Worker
71*1c60b9acSAndroid Build Coastguard Worker			# doesn't work inside macro :-O
72*1c60b9acSAndroid Build Coastguard Worker			# target_compile_definitions(${PLUGIN_NAME} PRIVATE LWS_BUILDING_SHARED)
73*1c60b9acSAndroid Build Coastguard Worker			target_include_directories(${PLUGIN_NAME} PRIVATE ${PLUGIN_INCLUDE}
74*1c60b9acSAndroid Build Coastguard Worker									  ${LWS_LIB_BUILD_INC_PATHS})
75*1c60b9acSAndroid Build Coastguard Worker			set_property(TARGET ${PLUGIN_NAME}
76*1c60b9acSAndroid Build Coastguard Worker				     PROPERTY COMPILE_DEFINITIONS
77*1c60b9acSAndroid Build Coastguard Worker				     INSTALL_DATADIR="${CMAKE_INSTALL_PREFIX}/plugins"
78*1c60b9acSAndroid Build Coastguard Worker			)
79*1c60b9acSAndroid Build Coastguard Worker
80*1c60b9acSAndroid Build Coastguard Worker			set(CMAKE_POSITION_INDEPENDENT_CODE ON)
81*1c60b9acSAndroid Build Coastguard Worker			list(APPEND PLUGINS_LIST ${PLUGIN_NAME})
82*1c60b9acSAndroid Build Coastguard Worker		else()
83*1c60b9acSAndroid Build Coastguard Worker			# let's just build the things into the lib
84*1c60b9acSAndroid Build Coastguard Worker
85*1c60b9acSAndroid Build Coastguard Worker			message("Building in plugin ${PLUGIN_NAME}")
86*1c60b9acSAndroid Build Coastguard Worker
87*1c60b9acSAndroid Build Coastguard Worker			if ("${PLUGIN_INCLUDE}" STREQUAL "")
88*1c60b9acSAndroid Build Coastguard Worker			else()
89*1c60b9acSAndroid Build Coastguard Worker				list(APPEND LWS_LIB_BUILD_INC_PATHS ../plugins/${PLUGIN_INCLUDE})
90*1c60b9acSAndroid Build Coastguard Worker			endif()
91*1c60b9acSAndroid Build Coastguard Worker
92*1c60b9acSAndroid Build Coastguard Worker			if ("${MAIN_SRC}" STREQUAL "")
93*1c60b9acSAndroid Build Coastguard Worker			else()
94*1c60b9acSAndroid Build Coastguard Worker				foreach(A ${MAIN_SRC})
95*1c60b9acSAndroid Build Coastguard Worker					list(APPEND SOURCES ../plugins/${A})
96*1c60b9acSAndroid Build Coastguard Worker				endforeach()
97*1c60b9acSAndroid Build Coastguard Worker			endif()
98*1c60b9acSAndroid Build Coastguard Worker			if ("${S2}" STREQUAL "")
99*1c60b9acSAndroid Build Coastguard Worker			else()
100*1c60b9acSAndroid Build Coastguard Worker				foreach(A ${S2})
101*1c60b9acSAndroid Build Coastguard Worker					list(APPEND SOURCES ../plugins/${A})
102*1c60b9acSAndroid Build Coastguard Worker				endforeach()
103*1c60b9acSAndroid Build Coastguard Worker			endif()
104*1c60b9acSAndroid Build Coastguard Worker			if ("${S3}" STREQUAL "")
105*1c60b9acSAndroid Build Coastguard Worker			else()
106*1c60b9acSAndroid Build Coastguard Worker				foreach(A ${S3})
107*1c60b9acSAndroid Build Coastguard Worker					list(APPEND SOURCES ../plugins/${A})
108*1c60b9acSAndroid Build Coastguard Worker				endforeach()
109*1c60b9acSAndroid Build Coastguard Worker			endif()
110*1c60b9acSAndroid Build Coastguard Worker
111*1c60b9acSAndroid Build Coastguard Worker		endif(NOT LWS_WITH_PLUGINS_BUILTIN)
112*1c60b9acSAndroid Build Coastguard Worker	endmacro()
113*1c60b9acSAndroid Build Coastguard Worker
114*1c60b9acSAndroid Build Coastguard Workerif (LWS_ROLE_WS)
115*1c60b9acSAndroid Build Coastguard Worker		create_plugin(protocol_dumb_increment ""
116*1c60b9acSAndroid Build Coastguard Worker			      "protocol_dumb_increment.c" "" "")
117*1c60b9acSAndroid Build Coastguard Worker		if (NOT LWS_WITH_PLUGINS_BUILTIN)
118*1c60b9acSAndroid Build Coastguard Worker			target_compile_definitions(protocol_dumb_increment PRIVATE LWS_BUILDING_SHARED)
119*1c60b9acSAndroid Build Coastguard Worker		endif()
120*1c60b9acSAndroid Build Coastguard Worker
121*1c60b9acSAndroid Build Coastguard Worker		create_plugin(protocol_lws_mirror ""
122*1c60b9acSAndroid Build Coastguard Worker			      "protocol_lws_mirror.c" "" "")
123*1c60b9acSAndroid Build Coastguard Worker		if (NOT LWS_WITH_PLUGINS_BUILTIN)
124*1c60b9acSAndroid Build Coastguard Worker			target_compile_definitions(protocol_lws_mirror PRIVATE LWS_BUILDING_SHARED)
125*1c60b9acSAndroid Build Coastguard Worker		endif()
126*1c60b9acSAndroid Build Coastguard Worker
127*1c60b9acSAndroid Build Coastguard Worker		create_plugin(protocol_lws_status ""
128*1c60b9acSAndroid Build Coastguard Worker			      "protocol_lws_status.c" "" "")
129*1c60b9acSAndroid Build Coastguard Worker		if (NOT LWS_WITH_PLUGINS_BUILTIN)
130*1c60b9acSAndroid Build Coastguard Worker			target_compile_definitions(protocol_lws_status PRIVATE LWS_BUILDING_SHARED)
131*1c60b9acSAndroid Build Coastguard Worker		endif()
132*1c60b9acSAndroid Build Coastguard Worker
133*1c60b9acSAndroid Build Coastguard Worker		if (NOT WIN32)
134*1c60b9acSAndroid Build Coastguard Worker			create_plugin(protocol_lws_raw_test ""
135*1c60b9acSAndroid Build Coastguard Worker			      "protocol_lws_raw_test.c" "" "")
136*1c60b9acSAndroid Build Coastguard Worker			if (NOT LWS_WITH_PLUGINS_BUILTIN)
137*1c60b9acSAndroid Build Coastguard Worker				target_compile_definitions(protocol_lws_raw_test PRIVATE LWS_BUILDING_SHARED)
138*1c60b9acSAndroid Build Coastguard Worker			endif()
139*1c60b9acSAndroid Build Coastguard Worker
140*1c60b9acSAndroid Build Coastguard Worker
141*1c60b9acSAndroid Build Coastguard Worker		      if (UNIX AND LWS_HAVE_PTHREAD_H)
142*1c60b9acSAndroid Build Coastguard Worker				create_plugin(protocol_deaddrop ""
143*1c60b9acSAndroid Build Coastguard Worker				      "deaddrop/protocol_lws_deaddrop.c" "" "")
144*1c60b9acSAndroid Build Coastguard Worker				if (NOT LWS_WITH_PLUGINS_BUILTIN)
145*1c60b9acSAndroid Build Coastguard Worker					target_compile_definitions(protocol_deaddrop PRIVATE LWS_BUILDING_SHARED)
146*1c60b9acSAndroid Build Coastguard Worker				endif()
147*1c60b9acSAndroid Build Coastguard Worker			endif()
148*1c60b9acSAndroid Build Coastguard Worker		endif()
149*1c60b9acSAndroid Build Coastguard Worker
150*1c60b9acSAndroid Build Coastguard Worker	if (LWS_WITH_SYS_METRICS)
151*1c60b9acSAndroid Build Coastguard Worker			create_plugin(protocol_lws_openmetrics_export ""
152*1c60b9acSAndroid Build Coastguard Worker				      "protocol_lws_openmetrics_export.c" "" "")
153*1c60b9acSAndroid Build Coastguard Worker			if (NOT LWS_WITH_PLUGINS_BUILTIN)
154*1c60b9acSAndroid Build Coastguard Worker				target_compile_definitions(protocol_lws_openmetrics_export PRIVATE LWS_BUILDING_SHARED)
155*1c60b9acSAndroid Build Coastguard Worker			endif()
156*1c60b9acSAndroid Build Coastguard Worker	endif()
157*1c60b9acSAndroid Build Coastguard Worker
158*1c60b9acSAndroid Build Coastguard Worker	if (NOT LWS_WITHOUT_CLIENT)
159*1c60b9acSAndroid Build Coastguard Worker			create_plugin(protocol_client_loopback_test ""
160*1c60b9acSAndroid Build Coastguard Worker        	                      "protocol_client_loopback_test.c" "" "")
161*1c60b9acSAndroid Build Coastguard Worker			if (NOT LWS_WITH_PLUGINS_BUILTIN)
162*1c60b9acSAndroid Build Coastguard Worker				target_compile_definitions(protocol_client_loopback_test PRIVATE LWS_BUILDING_SHARED)
163*1c60b9acSAndroid Build Coastguard Worker			endif()
164*1c60b9acSAndroid Build Coastguard Worker
165*1c60b9acSAndroid Build Coastguard Worker	endif()
166*1c60b9acSAndroid Build Coastguard Worker
167*1c60b9acSAndroid Build Coastguard Workerendif(LWS_ROLE_WS)
168*1c60b9acSAndroid Build Coastguard Worker
169*1c60b9acSAndroid Build Coastguard Worker	create_plugin(protocol_post_demo ""
170*1c60b9acSAndroid Build Coastguard Worker		      "protocol_post_demo.c" "" "")
171*1c60b9acSAndroid Build Coastguard Worker	if (NOT LWS_WITH_PLUGINS_BUILTIN)
172*1c60b9acSAndroid Build Coastguard Worker		target_compile_definitions(protocol_post_demo PRIVATE LWS_BUILDING_SHARED)
173*1c60b9acSAndroid Build Coastguard Worker	endif()
174*1c60b9acSAndroid Build Coastguard Worker
175*1c60b9acSAndroid Build Coastguard Worker
176*1c60b9acSAndroid Build Coastguard Workerif (LWS_ROLE_RAW_PROXY)
177*1c60b9acSAndroid Build Coastguard Worker	create_plugin(protocol_lws_raw_proxy ""
178*1c60b9acSAndroid Build Coastguard Worker		      "raw-proxy/protocol_lws_raw_proxy.c" "" "")
179*1c60b9acSAndroid Build Coastguard Worker	if (NOT LWS_WITH_PLUGINS_BUILTIN)
180*1c60b9acSAndroid Build Coastguard Worker		target_compile_definitions(protocol_lws_raw_proxy PRIVATE LWS_BUILDING_SHARED)
181*1c60b9acSAndroid Build Coastguard Worker	endif()
182*1c60b9acSAndroid Build Coastguard Worker
183*1c60b9acSAndroid Build Coastguard Workerendif()
184*1c60b9acSAndroid Build Coastguard Worker
185*1c60b9acSAndroid Build Coastguard Workerif (LWS_WITH_FTS)
186*1c60b9acSAndroid Build Coastguard Worker	create_plugin(protocol_fulltext_demo ""
187*1c60b9acSAndroid Build Coastguard Worker		      "protocol_fulltext_demo.c" "" "")
188*1c60b9acSAndroid Build Coastguard Worker	if (NOT LWS_WITH_PLUGINS_BUILTIN)
189*1c60b9acSAndroid Build Coastguard Worker		target_compile_definitions(protocol_fulltext_demo PRIVATE LWS_BUILDING_SHARED)
190*1c60b9acSAndroid Build Coastguard Worker	endif()
191*1c60b9acSAndroid Build Coastguard Worker
192*1c60b9acSAndroid Build Coastguard Workerendif()
193*1c60b9acSAndroid Build Coastguard Worker
194*1c60b9acSAndroid Build Coastguard Worker
195*1c60b9acSAndroid Build Coastguard Workerif (LWS_WITH_SSL)
196*1c60b9acSAndroid Build Coastguard Worker	create_plugin(protocol_lws_ssh_base "ssh-base/include"
197*1c60b9acSAndroid Build Coastguard Worker		      "ssh-base/sshd.c;ssh-base/telnet.c;ssh-base/kex-25519.c" "ssh-base/crypto/chacha.c;ssh-base/crypto/ed25519.c;ssh-base/crypto/fe25519.c;ssh-base/crypto/ge25519.c;ssh-base/crypto/poly1305.c;ssh-base/crypto/sc25519.c;ssh-base/crypto/smult_curve25519_ref.c" "")
198*1c60b9acSAndroid Build Coastguard Worker	if (NOT LWS_WITH_PLUGINS_BUILTIN)
199*1c60b9acSAndroid Build Coastguard Worker		target_compile_definitions(protocol_lws_ssh_base PRIVATE LWS_BUILDING_SHARED)
200*1c60b9acSAndroid Build Coastguard Worker	endif()
201*1c60b9acSAndroid Build Coastguard Worker
202*1c60b9acSAndroid Build Coastguard Worker	create_plugin(protocol_lws_sshd_demo "ssh-base/include" "protocol_lws_sshd_demo.c" "" "")
203*1c60b9acSAndroid Build Coastguard Worker	if (NOT LWS_WITH_PLUGINS_BUILTIN)
204*1c60b9acSAndroid Build Coastguard Worker		target_compile_definitions(protocol_lws_sshd_demo PRIVATE LWS_BUILDING_SHARED)
205*1c60b9acSAndroid Build Coastguard Worker	endif()
206*1c60b9acSAndroid Build Coastguard Worker
207*1c60b9acSAndroid Build Coastguard Worker	include_directories("${PROJECT_SOURCE_DIR}/plugins/ssh-base/include")
208*1c60b9acSAndroid Build Coastguard Workerendif()
209*1c60b9acSAndroid Build Coastguard Worker
210*1c60b9acSAndroid Build Coastguard Worker
211*1c60b9acSAndroid Build Coastguard Worker
212*1c60b9acSAndroid Build Coastguard Workerif (LWS_WITH_ACME)
213*1c60b9acSAndroid Build Coastguard Worker	create_plugin(protocol_lws_acme_client ""
214*1c60b9acSAndroid Build Coastguard Worker		      "acme-client/protocol_lws_acme_client.c" "" "")
215*1c60b9acSAndroid Build Coastguard Worker	if (NOT LWS_WITH_PLUGINS_BUILTIN)
216*1c60b9acSAndroid Build Coastguard Worker		target_compile_definitions(protocol_lws_acme_client PRIVATE LWS_BUILDING_SHARED)
217*1c60b9acSAndroid Build Coastguard Worker	endif()
218*1c60b9acSAndroid Build Coastguard Workerendif()
219*1c60b9acSAndroid Build Coastguard Worker
220*1c60b9acSAndroid Build Coastguard Workerendif((LWS_WITH_PLUGINS AND LWS_WITH_SHARED) OR LWS_WITH_PLUGINS_BUILTIN)
221*1c60b9acSAndroid Build Coastguard Worker
222*1c60b9acSAndroid Build Coastguard Worker
223*1c60b9acSAndroid Build Coastguard Worker# plugins
224*1c60b9acSAndroid Build Coastguard Worker
225*1c60b9acSAndroid Build Coastguard Workerif (LWS_WITH_PLUGINS AND NOT LWS_WITH_PLUGINS_BUILTIN)
226*1c60b9acSAndroid Build Coastguard Worker
227*1c60b9acSAndroid Build Coastguard Worker	install(TARGETS ${PLUGINS_LIST}
228*1c60b9acSAndroid Build Coastguard Worker		PERMISSIONS  OWNER_WRITE OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE OWNER_READ GROUP_READ WORLD_READ
229*1c60b9acSAndroid Build Coastguard Worker		DESTINATION share/libwebsockets-test-server/plugins
230*1c60b9acSAndroid Build Coastguard Worker		COMPONENT plugins)
231*1c60b9acSAndroid Build Coastguard Worker
232*1c60b9acSAndroid Build Coastguard Worker	if (NOT WIN32)
233*1c60b9acSAndroid Build Coastguard Worker		install(FILES deaddrop/assets/index.html;deaddrop/assets/deaddrop.js;deaddrop/assets/deaddrop.css;deaddrop/assets/drop.svg
234*1c60b9acSAndroid Build Coastguard Worker			DESTINATION share/libwebsockets-test-server/deaddrop
235*1c60b9acSAndroid Build Coastguard Worker			COMPONENT plugins)
236*1c60b9acSAndroid Build Coastguard Worker	endif()
237*1c60b9acSAndroid Build Coastguard Worker
238*1c60b9acSAndroid Build Coastguard Worker
239*1c60b9acSAndroid Build Coastguard Workerendif()
240*1c60b9acSAndroid Build Coastguard Worker
241*1c60b9acSAndroid Build Coastguard Workerexport_to_parent_intermediate()
242*1c60b9acSAndroid Build Coastguard Worker
243