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 - 2020 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 Worker# 26*1c60b9acSAndroid Build Coastguard Worker# Test applications 27*1c60b9acSAndroid Build Coastguard Worker# 28*1c60b9acSAndroid Build Coastguard Worker 29*1c60b9acSAndroid Build Coastguard Workerset(TEST_APP_LIST) 30*1c60b9acSAndroid Build Coastguard Workerif ((LWS_ROLE_H1 OR LWS_ROLE_H2)) 31*1c60b9acSAndroid Build Coastguard Worker # 32*1c60b9acSAndroid Build Coastguard Worker # Helper function for adding a test app. 33*1c60b9acSAndroid Build Coastguard Worker # 34*1c60b9acSAndroid Build Coastguard Worker macro(create_test_app TEST_NAME MAIN_SRC S2 S3 S4 S5 S6) 35*1c60b9acSAndroid Build Coastguard Worker 36*1c60b9acSAndroid Build Coastguard Worker set(TEST_SRCS ${MAIN_SRC}) 37*1c60b9acSAndroid Build Coastguard Worker set(TEST_HDR) 38*1c60b9acSAndroid Build Coastguard Worker if ("${S2}" STREQUAL "") 39*1c60b9acSAndroid Build Coastguard Worker else() 40*1c60b9acSAndroid Build Coastguard Worker list(APPEND TEST_SRCS ${S2}) 41*1c60b9acSAndroid Build Coastguard Worker endif() 42*1c60b9acSAndroid Build Coastguard Worker if ("${S3}" STREQUAL "") 43*1c60b9acSAndroid Build Coastguard Worker else() 44*1c60b9acSAndroid Build Coastguard Worker list(APPEND TEST_SRCS ${S3}) 45*1c60b9acSAndroid Build Coastguard Worker endif() 46*1c60b9acSAndroid Build Coastguard Worker if ("${S4}" STREQUAL "") 47*1c60b9acSAndroid Build Coastguard Worker else() 48*1c60b9acSAndroid Build Coastguard Worker list(APPEND TEST_SRCS ${S4}) 49*1c60b9acSAndroid Build Coastguard Worker endif() 50*1c60b9acSAndroid Build Coastguard Worker if ("${S5}" STREQUAL "") 51*1c60b9acSAndroid Build Coastguard Worker else() 52*1c60b9acSAndroid Build Coastguard Worker list(APPEND TEST_SRCS ${S5}) 53*1c60b9acSAndroid Build Coastguard Worker endif() 54*1c60b9acSAndroid Build Coastguard Worker if ("${S6}" STREQUAL "") 55*1c60b9acSAndroid Build Coastguard Worker else() 56*1c60b9acSAndroid Build Coastguard Worker list(APPEND TEST_SRCS ${S6}) 57*1c60b9acSAndroid Build Coastguard Worker endif() 58*1c60b9acSAndroid Build Coastguard Worker if (WIN32) 59*1c60b9acSAndroid Build Coastguard Worker list(APPEND TEST_SRCS 60*1c60b9acSAndroid Build Coastguard Worker ${WIN32_HELPERS_PATH}/getopt.c 61*1c60b9acSAndroid Build Coastguard Worker ${WIN32_HELPERS_PATH}/getopt_long.c 62*1c60b9acSAndroid Build Coastguard Worker ${WIN32_HELPERS_PATH}/gettimeofday.c 63*1c60b9acSAndroid Build Coastguard Worker ) 64*1c60b9acSAndroid Build Coastguard Worker 65*1c60b9acSAndroid Build Coastguard Worker list(APPEND TEST_HDR 66*1c60b9acSAndroid Build Coastguard Worker ${WIN32_HELPERS_PATH}/getopt.h 67*1c60b9acSAndroid Build Coastguard Worker ${WIN32_HELPERS_PATH}/gettimeofday.h 68*1c60b9acSAndroid Build Coastguard Worker ) 69*1c60b9acSAndroid Build Coastguard Worker endif(WIN32) 70*1c60b9acSAndroid Build Coastguard Worker 71*1c60b9acSAndroid Build Coastguard Worker source_group("Headers Private" FILES ${TEST_HDR}) 72*1c60b9acSAndroid Build Coastguard Worker source_group("Sources" FILES ${TEST_SRCS}) 73*1c60b9acSAndroid Build Coastguard Worker add_executable(${TEST_NAME} ${TEST_SRCS} ${TEST_HDR}) 74*1c60b9acSAndroid Build Coastguard Worker 75*1c60b9acSAndroid Build Coastguard Worker foreach(libpath ${LWS_DEP_LIB_PATHS}) 76*1c60b9acSAndroid Build Coastguard Worker target_link_directories(${TEST_NAME} ${libpath}) 77*1c60b9acSAndroid Build Coastguard Worker endforeach() 78*1c60b9acSAndroid Build Coastguard Worker 79*1c60b9acSAndroid Build Coastguard Worker if (LWS_LINK_TESTAPPS_DYNAMIC) 80*1c60b9acSAndroid Build Coastguard Worker if (NOT LWS_WITH_SHARED) 81*1c60b9acSAndroid Build Coastguard Worker message(FATAL_ERROR "Build of the shared library is disabled. LWS_LINK_TESTAPPS_DYNAMIC must be combined with LWS_WITH_SHARED.") 82*1c60b9acSAndroid Build Coastguard Worker endif() 83*1c60b9acSAndroid Build Coastguard Worker target_link_libraries(${TEST_NAME} websockets_shared) 84*1c60b9acSAndroid Build Coastguard Worker add_dependencies(${TEST_NAME} websockets_shared) 85*1c60b9acSAndroid Build Coastguard Worker else() 86*1c60b9acSAndroid Build Coastguard Worker if (NOT LWS_WITH_STATIC) 87*1c60b9acSAndroid Build Coastguard Worker message(FATAL_ERROR "Build of the static library is disabled. Disabled LWS_LINK_TESTAPPS_DYNAMIC must be combined with LWS_WITH_STATIC.") 88*1c60b9acSAndroid Build Coastguard Worker endif() 89*1c60b9acSAndroid Build Coastguard Worker target_link_libraries(${TEST_NAME} websockets) 90*1c60b9acSAndroid Build Coastguard Worker add_dependencies(${TEST_NAME} websockets) 91*1c60b9acSAndroid Build Coastguard Worker if (UNIX AND LWS_WITH_SSL AND NOT LWS_WITH_MBEDTLS) 92*1c60b9acSAndroid Build Coastguard Worker target_link_libraries(${TEST_NAME} ${CMAKE_DL_LIBS}) 93*1c60b9acSAndroid Build Coastguard Worker endif() 94*1c60b9acSAndroid Build Coastguard Worker endif() 95*1c60b9acSAndroid Build Coastguard Worker 96*1c60b9acSAndroid Build Coastguard Worker if (LWS_LIB_INCLUDES) 97*1c60b9acSAndroid Build Coastguard Worker target_include_directories(${TEST_NAME} PRIVATE "${LWS_LIB_INCLUDES}" ${LWS_LIB_BUILD_INC_PATHS}) 98*1c60b9acSAndroid Build Coastguard Worker else() 99*1c60b9acSAndroid Build Coastguard Worker target_include_directories(${TEST_NAME} PRIVATE ${LWS_LIB_BUILD_INC_PATHS}) 100*1c60b9acSAndroid Build Coastguard Worker endif() 101*1c60b9acSAndroid Build Coastguard Worker target_compile_options(${TEST_NAME} PRIVATE ${LWS_PTHR_FLAGS}) 102*1c60b9acSAndroid Build Coastguard Worker 103*1c60b9acSAndroid Build Coastguard Worker if (LWS_WITH_HTTP_STREAM_COMPRESSION) 104*1c60b9acSAndroid Build Coastguard Worker target_link_libraries(${TEST_NAME} z) 105*1c60b9acSAndroid Build Coastguard Worker endif() 106*1c60b9acSAndroid Build Coastguard Worker 107*1c60b9acSAndroid Build Coastguard Worker # Set test app specific defines. 108*1c60b9acSAndroid Build Coastguard Worker set_property(TARGET ${TEST_NAME} 109*1c60b9acSAndroid Build Coastguard Worker PROPERTY COMPILE_DEFINITIONS 110*1c60b9acSAndroid Build Coastguard Worker INSTALL_DATADIR="${CMAKE_INSTALL_PREFIX}/share" 111*1c60b9acSAndroid Build Coastguard Worker ) 112*1c60b9acSAndroid Build Coastguard Worker 113*1c60b9acSAndroid Build Coastguard Worker # Prefix the binary names with libwebsockets. 114*1c60b9acSAndroid Build Coastguard Worker set_target_properties(${TEST_NAME} 115*1c60b9acSAndroid Build Coastguard Worker PROPERTIES 116*1c60b9acSAndroid Build Coastguard Worker OUTPUT_NAME libwebsockets-${TEST_NAME}) 117*1c60b9acSAndroid Build Coastguard Worker 118*1c60b9acSAndroid Build Coastguard Worker target_link_libraries(${TEST_NAME} ${LIB_LIST_AT_END}) 119*1c60b9acSAndroid Build Coastguard Worker 120*1c60b9acSAndroid Build Coastguard Worker # Add to the list of tests. 121*1c60b9acSAndroid Build Coastguard Worker list(APPEND TEST_APP_LIST ${TEST_NAME}) 122*1c60b9acSAndroid Build Coastguard Worker endmacro() 123*1c60b9acSAndroid Build Coastguard Worker 124*1c60b9acSAndroid Build Coastguard Worker if (NOT LWS_WITHOUT_SERVER) 125*1c60b9acSAndroid Build Coastguard Worker # 126*1c60b9acSAndroid Build Coastguard Worker # test-server 127*1c60b9acSAndroid Build Coastguard Worker # 128*1c60b9acSAndroid Build Coastguard Worker if (NOT LWS_WITHOUT_TEST_SERVER) 129*1c60b9acSAndroid Build Coastguard Worker create_test_app(test-server "test-server.c" 130*1c60b9acSAndroid Build Coastguard Worker "" 131*1c60b9acSAndroid Build Coastguard Worker "" 132*1c60b9acSAndroid Build Coastguard Worker "" 133*1c60b9acSAndroid Build Coastguard Worker "" 134*1c60b9acSAndroid Build Coastguard Worker "") 135*1c60b9acSAndroid Build Coastguard Worker target_compile_definitions(test-server PRIVATE LWS_BUILDING_SHARED) 136*1c60b9acSAndroid Build Coastguard Worker 137*1c60b9acSAndroid Build Coastguard Worker if (LWS_WITH_CGI AND (LWS_WITH_PLUGINS OR LWS_WITH_PLUGINS_BUILTIN) AND LWS_WITH_TLS) 138*1c60b9acSAndroid Build Coastguard Worker create_test_app(test-sshd "test-sshd.c" 139*1c60b9acSAndroid Build Coastguard Worker "" 140*1c60b9acSAndroid Build Coastguard Worker "" 141*1c60b9acSAndroid Build Coastguard Worker "" 142*1c60b9acSAndroid Build Coastguard Worker "" 143*1c60b9acSAndroid Build Coastguard Worker "") 144*1c60b9acSAndroid Build Coastguard Worker target_include_directories(test-sshd PRIVATE "${PROJECT_SOURCE_DIR}/plugins/ssh-base/include") 145*1c60b9acSAndroid Build Coastguard Worker target_compile_definitions(test-sshd PRIVATE LWS_BUILDING_SHARED) 146*1c60b9acSAndroid Build Coastguard Worker endif() 147*1c60b9acSAndroid Build Coastguard Worker 148*1c60b9acSAndroid Build Coastguard Worker endif() 149*1c60b9acSAndroid Build Coastguard Worker 150*1c60b9acSAndroid Build Coastguard Worker # 151*1c60b9acSAndroid Build Coastguard Worker # test-server-extpoll 152*1c60b9acSAndroid Build Coastguard Worker # 153*1c60b9acSAndroid Build Coastguard Worker if (NOT LWS_WITHOUT_TEST_SERVER_EXTPOLL AND NOT WIN32) 154*1c60b9acSAndroid Build Coastguard Worker create_test_app(test-server-extpoll 155*1c60b9acSAndroid Build Coastguard Worker "test-server.c" 156*1c60b9acSAndroid Build Coastguard Worker "" 157*1c60b9acSAndroid Build Coastguard Worker "" 158*1c60b9acSAndroid Build Coastguard Worker "" 159*1c60b9acSAndroid Build Coastguard Worker "" 160*1c60b9acSAndroid Build Coastguard Worker "") 161*1c60b9acSAndroid Build Coastguard Worker target_compile_definitions(test-server-extpoll PRIVATE LWS_BUILDING_SHARED) 162*1c60b9acSAndroid Build Coastguard Worker # Set defines for this executable only. 163*1c60b9acSAndroid Build Coastguard Worker set_property( 164*1c60b9acSAndroid Build Coastguard Worker TARGET test-server-extpoll 165*1c60b9acSAndroid Build Coastguard Worker PROPERTY COMPILE_DEFINITIONS 166*1c60b9acSAndroid Build Coastguard Worker EXTERNAL_POLL 167*1c60b9acSAndroid Build Coastguard Worker INSTALL_DATADIR="${CMAKE_INSTALL_PREFIX}/share" 168*1c60b9acSAndroid Build Coastguard Worker ) 169*1c60b9acSAndroid Build Coastguard Worker 170*1c60b9acSAndroid Build Coastguard Worker # We need to link against winsock code. 171*1c60b9acSAndroid Build Coastguard Worker if (WIN32) 172*1c60b9acSAndroid Build Coastguard Worker target_link_libraries(test-server-extpoll ws2_32.lib) 173*1c60b9acSAndroid Build Coastguard Worker endif(WIN32) 174*1c60b9acSAndroid Build Coastguard Worker endif() 175*1c60b9acSAndroid Build Coastguard Worker 176*1c60b9acSAndroid Build Coastguard Worker if (LWS_WITH_LEJP) 177*1c60b9acSAndroid Build Coastguard Worker create_test_app( 178*1c60b9acSAndroid Build Coastguard Worker test-lejp 179*1c60b9acSAndroid Build Coastguard Worker "test-lejp.c" 180*1c60b9acSAndroid Build Coastguard Worker "" 181*1c60b9acSAndroid Build Coastguard Worker "" 182*1c60b9acSAndroid Build Coastguard Worker "" 183*1c60b9acSAndroid Build Coastguard Worker "" 184*1c60b9acSAndroid Build Coastguard Worker "") 185*1c60b9acSAndroid Build Coastguard Worker target_compile_definitions(test-lejp PRIVATE LWS_BUILDING_STATIC) 186*1c60b9acSAndroid Build Coastguard Worker endif() 187*1c60b9acSAndroid Build Coastguard Worker 188*1c60b9acSAndroid Build Coastguard Worker if (LWS_WITH_CBOR) 189*1c60b9acSAndroid Build Coastguard Worker create_test_app( 190*1c60b9acSAndroid Build Coastguard Worker test-lecp 191*1c60b9acSAndroid Build Coastguard Worker "test-lecp.c" 192*1c60b9acSAndroid Build Coastguard Worker "" 193*1c60b9acSAndroid Build Coastguard Worker "" 194*1c60b9acSAndroid Build Coastguard Worker "" 195*1c60b9acSAndroid Build Coastguard Worker "" 196*1c60b9acSAndroid Build Coastguard Worker "") 197*1c60b9acSAndroid Build Coastguard Worker target_compile_definitions(test-lecp PRIVATE LWS_BUILDING_STATIC) 198*1c60b9acSAndroid Build Coastguard Worker endif() 199*1c60b9acSAndroid Build Coastguard Worker 200*1c60b9acSAndroid Build Coastguard Worker 201*1c60b9acSAndroid Build Coastguard Worker # Data files for running the test server. 202*1c60b9acSAndroid Build Coastguard Worker list(APPEND TEST_SERVER_DATA 203*1c60b9acSAndroid Build Coastguard Worker "${PROJECT_SOURCE_DIR}/test-apps/favicon.ico" 204*1c60b9acSAndroid Build Coastguard Worker "${PROJECT_SOURCE_DIR}/test-apps/leaf.jpg" 205*1c60b9acSAndroid Build Coastguard Worker "${PROJECT_SOURCE_DIR}/test-apps/candide.zip" 206*1c60b9acSAndroid Build Coastguard Worker "${PROJECT_SOURCE_DIR}/test-apps/candide-uncompressed.zip" 207*1c60b9acSAndroid Build Coastguard Worker "${PROJECT_SOURCE_DIR}/test-apps/libwebsockets.org-logo.svg" 208*1c60b9acSAndroid Build Coastguard Worker "${PROJECT_SOURCE_DIR}/test-apps/http2.png" 209*1c60b9acSAndroid Build Coastguard Worker "${PROJECT_SOURCE_DIR}/test-apps/wss-over-h2.png" 210*1c60b9acSAndroid Build Coastguard Worker "${PROJECT_SOURCE_DIR}/test-apps/lws-common.js" 211*1c60b9acSAndroid Build Coastguard Worker "${PROJECT_SOURCE_DIR}/test-apps/test.html" 212*1c60b9acSAndroid Build Coastguard Worker "${PROJECT_SOURCE_DIR}/test-apps/test.css" 213*1c60b9acSAndroid Build Coastguard Worker "${PROJECT_SOURCE_DIR}/test-apps/test.js") 214*1c60b9acSAndroid Build Coastguard Worker 215*1c60b9acSAndroid Build Coastguard Worker add_custom_command(TARGET test-server 216*1c60b9acSAndroid Build Coastguard Worker POST_BUILD 217*1c60b9acSAndroid Build Coastguard Worker COMMAND "${CMAKE_COMMAND}" -E make_directory "$<TARGET_FILE_DIR:test-server>/../share/libwebsockets-test-server") 218*1c60b9acSAndroid Build Coastguard Worker 219*1c60b9acSAndroid Build Coastguard Worker # Copy the file needed to run the server so that the test apps can 220*1c60b9acSAndroid Build Coastguard Worker # reach them from their default output location 221*1c60b9acSAndroid Build Coastguard Worker foreach (TEST_FILE ${TEST_SERVER_DATA}) 222*1c60b9acSAndroid Build Coastguard Worker if (EXISTS ${TEST_FILE}) 223*1c60b9acSAndroid Build Coastguard Worker add_custom_command(TARGET test-server 224*1c60b9acSAndroid Build Coastguard Worker POST_BUILD 225*1c60b9acSAndroid Build Coastguard Worker COMMAND "${CMAKE_COMMAND}" -E copy "${TEST_FILE}" "$<TARGET_FILE_DIR:test-server>/../share/libwebsockets-test-server" VERBATIM) 226*1c60b9acSAndroid Build Coastguard Worker endif() 227*1c60b9acSAndroid Build Coastguard Worker endforeach() 228*1c60b9acSAndroid Build Coastguard Worker endif(NOT LWS_WITHOUT_SERVER) 229*1c60b9acSAndroid Build Coastguard Worker 230*1c60b9acSAndroid Build Coastguard Worker if (NOT LWS_WITHOUT_CLIENT) 231*1c60b9acSAndroid Build Coastguard Worker # 232*1c60b9acSAndroid Build Coastguard Worker # test-client 233*1c60b9acSAndroid Build Coastguard Worker # 234*1c60b9acSAndroid Build Coastguard Worker if (NOT LWS_WITHOUT_TEST_CLIENT) 235*1c60b9acSAndroid Build Coastguard Worker create_test_app(test-client "test-client.c" "" "" "" "" "") 236*1c60b9acSAndroid Build Coastguard Worker endif() 237*1c60b9acSAndroid Build Coastguard Worker 238*1c60b9acSAndroid Build Coastguard Worker endif(NOT LWS_WITHOUT_CLIENT) 239*1c60b9acSAndroid Build Coastguard Workerendif((LWS_ROLE_H1 OR LWS_ROLE_H2)) 240*1c60b9acSAndroid Build Coastguard Worker 241*1c60b9acSAndroid Build Coastguard Worker# Install test apps. 242*1c60b9acSAndroid Build Coastguard Worker 243*1c60b9acSAndroid Build Coastguard Workerinstall(TARGETS ${TEST_APP_LIST} 244*1c60b9acSAndroid Build Coastguard Worker RUNTIME DESTINATION ${LWS_INSTALL_EXAMPLES_DIR} 245*1c60b9acSAndroid Build Coastguard Worker COMPONENT examples) 246*1c60b9acSAndroid Build Coastguard Workerset(CPACK_COMPONENT_EXAMPLES_DISPLAY_NAME "Example files") 247*1c60b9acSAndroid Build Coastguard Worker 248*1c60b9acSAndroid Build Coastguard Worker# Programs shared files used by the test-server 249*1c60b9acSAndroid Build Coastguard Worker 250*1c60b9acSAndroid Build Coastguard Workerif (NOT LWS_WITHOUT_SERVER) 251*1c60b9acSAndroid Build Coastguard Worker install(FILES ${TEST_SERVER_DATA} 252*1c60b9acSAndroid Build Coastguard Worker DESTINATION share/libwebsockets-test-server 253*1c60b9acSAndroid Build Coastguard Worker COMPONENT examples) 254*1c60b9acSAndroid Build Coastguard Worker 255*1c60b9acSAndroid Build Coastguard Worker install(FILES "${PROJECT_SOURCE_DIR}/test-apps/private/index.html" 256*1c60b9acSAndroid Build Coastguard Worker DESTINATION share/libwebsockets-test-server/private 257*1c60b9acSAndroid Build Coastguard Worker COMPONENT examples) 258*1c60b9acSAndroid Build Coastguard Workerif (LWS_WITH_CGI) 259*1c60b9acSAndroid Build Coastguard Worker set(CGI_TEST_SCRIPT "${PROJECT_SOURCE_DIR}/test-apps/lws-cgi-test.sh") 260*1c60b9acSAndroid Build Coastguard Worker install(FILES ${CGI_TEST_SCRIPT} 261*1c60b9acSAndroid Build Coastguard Worker PERMISSIONS OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE OWNER_READ GROUP_READ WORLD_READ 262*1c60b9acSAndroid Build Coastguard Worker DESTINATION share/libwebsockets-test-server 263*1c60b9acSAndroid Build Coastguard Worker COMPONENT examples) 264*1c60b9acSAndroid Build Coastguard Worker endif() 265*1c60b9acSAndroid Build Coastguard Workerendif() 266*1c60b9acSAndroid Build Coastguard Worker 267*1c60b9acSAndroid Build Coastguard Worker 268*1c60b9acSAndroid Build Coastguard Workerif (NOT LWS_WITHOUT_TEST_SERVER AND NOT LWS_WITHOUT_SERVER) 269*1c60b9acSAndroid Build Coastguard Worker install(FILES lws-ssh-test-keys;lws-ssh-test-keys.pub 270*1c60b9acSAndroid Build Coastguard Worker DESTINATION share/libwebsockets-test-server 271*1c60b9acSAndroid Build Coastguard Worker COMPONENT examples) 272*1c60b9acSAndroid Build Coastguard Workerendif() 273