- if (UNIX AND LWS_WITH_PLUGINS)
- set(CMAKE_C_FLAGS "-fPIC ${CMAKE_C_FLAGS}")
- target_link_libraries(websockets dl)
- endif()
-
- if (NOT LWS_WITHOUT_SERVER)
- #
- # test-server
- #
- if (NOT LWS_WITHOUT_TEST_SERVER)
- create_test_app(test-server "test-server/test-server.c"
- "test-server/test-server-http.c"
- "test-server/test-server-dumb-increment.c"
- "test-server/test-server-mirror.c"
- "test-server/test-server-status.c"
- "test-server/test-server-echogen.c")
- if (UNIX)
- create_test_app(test-fuzxy "test-server/fuzxy.c"
- ""
- ""
- ""
- ""
- "")
- endif()
- if (UNIX AND NOT ((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")))
- create_test_app(test-server-pthreads
- "test-server/test-server-pthreads.c"
- "test-server/test-server-http.c"
- "test-server/test-server-dumb-increment.c"
- "test-server/test-server-mirror.c"
- "test-server/test-server-status.c"
- "test-server/test-server-echogen.c")
- endif()
- if (NOT ((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
- AND LWS_WITH_LIBEV)
- create_test_app(test-server-libev
- "test-server/test-server-libev.c"
- "test-server/test-server-http.c"
- "test-server/test-server-dumb-increment.c"
- "test-server/test-server-mirror.c"
- "test-server/test-server-status.c"
- "test-server/test-server-echogen.c")
- endif()
- if (NOT ((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
- AND LWS_WITH_LIBUV)
- create_test_app(test-server-libuv
- "test-server/test-server-libuv.c"
- "test-server/test-server-http.c"
- "test-server/test-server-dumb-increment.c"
- "test-server/test-server-mirror.c"
- "test-server/test-server-status.c"
- "test-server/test-server-echogen.c")
- endif()
- endif()
-
- #
- # test-server-extpoll
- #
- if (NOT LWS_WITHOUT_TEST_SERVER_EXTPOLL)
- create_test_app(test-server-extpoll "test-server/test-server.c"
- "test-server/test-server-http.c"
- "test-server/test-server-dumb-increment.c"
- "test-server/test-server-mirror.c"
- "test-server/test-server-status.c"
- "test-server/test-server-echogen.c")
- # Set defines for this executable only.
- set_property(
- TARGET test-server-extpoll
- PROPERTY COMPILE_DEFINITIONS
- EXTERNAL_POLL
- INSTALL_DATADIR="${CMAKE_INSTALL_PREFIX}/share"
- )
-
- # We need to link against winsock code.
- if (WIN32)
- target_link_libraries(test-server-extpoll ws2_32.lib)
- endif(WIN32)
- endif()
-
- # Data files for running the test server.
- set(TEST_SERVER_DATA
- "${PROJECT_SOURCE_DIR}/test-server/favicon.ico"
- "${PROJECT_SOURCE_DIR}/test-server/leaf.jpg"
- "${PROJECT_SOURCE_DIR}/test-server/libwebsockets.org-logo.png"
- "${PROJECT_SOURCE_DIR}/test-server/test.html")
-
- # Generate self-signed SSL certs for the test-server.
- if (LWS_WITH_SSL AND OPENSSL_EXECUTABLE AND NOT LWS_WITHOUT_TEST_SERVER)
- message("Generating SSL Certificates for the test-server...")
-
- set(TEST_SERVER_SSL_KEY "${PROJECT_BINARY_DIR}/libwebsockets-test-server.key.pem")
- set(TEST_SERVER_SSL_CERT "${PROJECT_BINARY_DIR}/libwebsockets-test-server.pem")
-
- if (WIN32)
- if (MINGW)
- message("cmd = \"${OPENSSL_EXECUTABLE}\" req -new -newkey rsa:1024 -days 10000 -nodes -x509 -subj \"/C=GB/ST=Erewhon/L=All around/O=libwebsockets-test/CN=localhost\" -keyout \"${TEST_SERVER_SSL_KEY}\" -out \"${TEST_SERVER_SSL_CERT}\"")
- execute_process(
- COMMAND "${OPENSSL_EXECUTABLE}" req -new -newkey rsa:1024 -days 10000 -nodes -x509 -subj "/C=GB/ST=Erewhon/L=All around/O=libwebsockets-test/CN=localhost" -keyout "${TEST_SERVER_SSL_KEY}" -out "${TEST_SERVER_SSL_CERT}"
- RESULT_VARIABLE OPENSSL_RETURN_CODE)
- else()
- file(WRITE "${PROJECT_BINARY_DIR}/openssl_input.txt"
- "GB\n"
- "Erewhon\n"
- "All around\n"
- "libwebsockets-test\n"
- "localhost\n"
- "none@invalid.org\n\n"
- )
-
- # The "type" command is a bit picky with paths.
- file(TO_NATIVE_PATH "${PROJECT_BINARY_DIR}/openssl_input.txt" OPENSSL_INPUT_WIN_PATH)
- message("OPENSSL_INPUT_WIN_PATH = ${OPENSSL_INPUT_WIN_PATH}")
- message("cmd = \"${OPENSSL_EXECUTABLE}\" req -new -newkey rsa:1024 -days 10000 -nodes -x509 -keyout \"${TEST_SERVER_SSL_KEY}\" -out \"${TEST_SERVER_SSL_CERT}\"")
-
- execute_process(
- COMMAND cmd /c type "${OPENSSL_INPUT_WIN_PATH}"
- COMMAND "${OPENSSL_EXECUTABLE}" req -new -newkey rsa:1024 -days 10000 -nodes -x509 -keyout "${TEST_SERVER_SSL_KEY}" -out "${TEST_SERVER_SSL_CERT}"
- RESULT_VARIABLE OPENSSL_RETURN_CODE
- OUTPUT_QUIET ERROR_QUIET)
-
- message("\n")
- endif()
-
- if (OPENSSL_RETURN_CODE)
- message(WARNING "!!! Failed to generate SSL certificate for Test Server using cmd.exe !!!:\nOpenSSL return code = ${OPENSSL_RETURN_CODE}")
- else()
- message("SUCCSESFULLY generated SSL certificate")
- endif()
- else()
- # Unix.
- execute_process(
- COMMAND printf "GB\\nErewhon\\nAll around\\nlibwebsockets-test\\n\\nlocalhost\\nnone@invalid.org\\n"
- COMMAND "${OPENSSL_EXECUTABLE}"
- req -new -newkey rsa:1024 -days 10000 -nodes -x509 -keyout "${TEST_SERVER_SSL_KEY}" -out "${TEST_SERVER_SSL_CERT}"
- RESULT_VARIABLE OPENSSL_RETURN_CODE
- OUTPUT_QUIET ERROR_QUIET)
-
- if (OPENSSL_RETURN_CODE)
- message(WARNING "!!! Failed to generate SSL certificate for Test Server!!!:\nOpenSSL return code = ${OPENSSL_RETURN_CODE}")
- else()
- message("SUCCESSFULLY generated SSL certificate")
- endif()
- endif()
-
- list(APPEND TEST_SERVER_DATA
- "${TEST_SERVER_SSL_KEY}"
- "${TEST_SERVER_SSL_CERT}")
- endif()
-
- add_custom_command(TARGET test-server
- POST_BUILD
- COMMAND "${CMAKE_COMMAND}" -E make_directory "$<TARGET_FILE_DIR:test-server>/../share/libwebsockets-test-server")
-
- # Copy the file needed to run the server so that the test apps can
- # reach them from their default output location
- foreach (TEST_FILE ${TEST_SERVER_DATA})
- if (EXISTS ${TEST_FILE})
- add_custom_command(TARGET test-server
- POST_BUILD
- COMMAND "${CMAKE_COMMAND}" -E copy "${TEST_FILE}" "$<TARGET_FILE_DIR:test-server>/../share/libwebsockets-test-server" VERBATIM)
- endif()
- endforeach()
- endif(NOT LWS_WITHOUT_SERVER)
-
- if (NOT LWS_WITHOUT_CLIENT)
- #
- # test-client
- #
- if (NOT LWS_WITHOUT_TEST_CLIENT)
- create_test_app(test-client "test-server/test-client.c" "" "" "" "" "")
- endif()