1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-09 00:00:04 +01:00

Fixed CMake compile options.

Fixed so that the build options for the CMake project works:

- The test apps used the LWS_NO_EXTENSIONS define, so they needed lws_config.h included when building using CMake.
- Rename some options so that individual test apps can be turned off.
- Separate building the test-client/test-server and compiling the server/client parts into the lib.
- Don't include server or client specific sources into the build if they shouldn't be built.
- Added an error if both client and server parts are excluded at the same time (makes no sense).
- Removed duplicate install targets for the test apps.
- Commented out the WITH_LIBCRYPTO option since it isn't used at the moment.
This commit is contained in:
Joakim Soderberg 2013-02-22 09:28:04 +08:00 committed by Andy Green
parent fcec61c576
commit 7eadd586b1
5 changed files with 86 additions and 52 deletions

View file

@ -32,17 +32,24 @@ option(WITH_SSL "Include SSL support (default OpenSSL, CyaSSL if USE_CYASSL is s
option(USE_EXTERNAL_ZLIB "Search the system for ZLib instead of using the included one (on Windows)" OFF)
option(USE_CYASSL "Use CyaSSL replacement for OpenSSL. When settings this, you also need to specify CYASSL_LIB and CYASSL_INCLUDE_DIRS" OFF)
option(WITHOUT_BUILTIN_GETIFADDRS "Don't use BSD getifaddrs implementation from libwebsockets if it is missing (this will result in a compilation error) ... Default is your libc provides it. On some systems such as uclibc it doesn't exist." OFF)
option(WITHOUT_TESTAPPS "Don't build the libwebsocket-test-apps" OFF)
option(WITHOUT_CLIENT "Don't build the client part of the library" OFF)
option(WITHOUT_SERVER "Don't build the server part of the library" OFF)
option(WITHOUT_SERVER_EXTPOLL "Don't build a server version that uses external poll" OFF)
option(WITH_LIBCRYPTO "Use libcrypto MD5 and SHA1 implementations" ON)
option(WITHOUT_PING "Don't build the ping test application" OFF)
#option(WITH_LIBCRYPTO "Use libcrypto MD5 and SHA1 implementations" ON)
option(WITHOUT_TESTAPPS "Don't build the libwebsocket-test-apps" OFF)
option(WITHOUT_TEST_SERVER "Don't build the test server" OFF)
option(WITHOUT_TEST_SERVER_EXTPOLL "Don't build the test server version that uses external poll" OFF)
option(WITHOUT_TEST_PING "Don't build the ping test application" OFF)
option(WITHOUT_TEST_CLIENT "Don't build the client test application" OFF)
option(WITHOUT_TEST_FRAGGLE "Don't build the ping test application" OFF)
option(WITHOUT_DEBUG "Don't compile debug related code" OFF)
option(WITHOUT_EXTENSIONS "Don't compile with extensions" OFF)
option(WITH_LATENCY "Build latency measuring code into the library" OFF)
option(WITHOUT_DAEMONIZE "Don't build the daemonization api" OFF)
if (WITHOUT_CLIENT AND WITHOUT_SERVER)
message(FATAL_ERROR "Makes no sense to compile without both client or server.")
endif()
# The base dir where the SSL dirs should be looked for.
set(SSL_CERT_DIR CACHE STRING "")
set(SSL_CLIENT_CERT_DIR CACHE STRING "")
@ -215,18 +222,28 @@ set(HDR_PUBLIC
set(SOURCES
lib/base64-decode.c
lib/client.c
lib/client-handshake.c
lib/client-parser.c
lib/handshake.c
lib/libwebsockets.c
lib/output.c
lib/parsers.c
lib/server.c
lib/server-handshake.c
lib/sha-1.c
)
if (NOT WITHOUT_CLIENT)
list(APPEND SOURCES
lib/client.c
lib/client-handshake.c
lib/client-parser.c
)
endif()
if (NOT WITHOUT_SERVER)
list(APPEND SOURCES
lib/server.c
lib/server-handshake.c
)
endif()
if (NOT WITHOUT_EXTENSIONS)
list(APPEND HDR_PRIVATE
lib/extension-deflate-frame.h
@ -468,41 +485,30 @@ if (NOT WITHOUT_TESTAPPS)
OUTPUT_NAME libwebsockets-${TEST_NAME})
# Add to the list of tests.
list(APPEND TEST_APP_LIST $TEST_NAME)
install(TARGETS ${TEST_NAME}
RUNTIME DESTINATION /usr/local/bin)
list(APPEND TEST_APP_LIST ${TEST_NAME})
endfunction()
#
# test-client
#
if (NOT WITHOUT_CLIENT)
create_test_app(test-client
"test-server/test-client.c"
""
"")
endif()
if (WITH_SSL AND NOT USE_CYASSL)
message("Searching for OpenSSL executable and dlls")
find_package(OpenSSLbins)
message("OpenSSL executable: ${OPENSSL_EXECUTABLE}")
endif()
#
# test-server
#
if (NOT WITHOUT_SERVER)
create_test_app(test-server
"test-server/test-server.c"
""
"${WIN32_HELPERS_PATH}/netdb.h;${WIN32_HELPERS_PATH}/strings.h;${WIN32_HELPERS_PATH}/unistd.h;${WIN32_HELPERS_PATH}/websock-w32.h")
#
# test-server
#
if (NOT WITHOUT_TEST_SERVER)
create_test_app(test-server
"test-server/test-server.c"
""
"${WIN32_HELPERS_PATH}/netdb.h;${WIN32_HELPERS_PATH}/strings.h;${WIN32_HELPERS_PATH}/unistd.h;${WIN32_HELPERS_PATH}/websock-w32.h")
endif()
#
# test-server-extpoll
#
if (NOT WITHOUT_SERVER_EXTPOLL)
if (NOT WITHOUT_TEST_SERVER_EXTPOLL)
create_test_app(test-server-extpoll
"test-server/test-server.c"
"win32port/win32helpers/websock-w32.c"
@ -560,27 +566,39 @@ if (NOT WITHOUT_TESTAPPS)
${TEST_SERVER_SSL_KEY}
${TEST_SERVER_SSL_CERT})
endif()
endif()
endif(NOT WITHOUT_SERVER)
#
# test-fraggle
#
if (NOT WITHOUT_FRAGGLE)
create_test_app(test-fraggle
"test-server/test-fraggle.c"
""
"${WIN32_HELPERS_PATH}/unistd.h;${WIN32_HELPERS_PATH}/sys/time.h")
endif()
if (NOT WITHOUT_CLIENT)
#
# test-client
#
if (NOT WITHOUT_TEST_CLIENT)
create_test_app(test-client
"test-server/test-client.c"
""
"")
endif()
#
# test-ping
#
if (NOT WITHOUT_PING)
create_test_app(test-ping
"test-server/test-ping.c"
""
"${WIN32_HELPERS_PATH}/unistd.h;${WIN32_HELPERS_PATH}/sys/time.h")
endif()
#
# test-fraggle
#
if (NOT WITHOUT_TEST_FRAGGLE)
create_test_app(test-fraggle
"test-server/test-fraggle.c"
""
"${WIN32_HELPERS_PATH}/unistd.h;${WIN32_HELPERS_PATH}/sys/time.h")
endif()
#
# test-ping
#
if (NOT WITHOUT_TEST_PING)
create_test_app(test-ping
"test-server/test-ping.c"
""
"${WIN32_HELPERS_PATH}/unistd.h;${WIN32_HELPERS_PATH}/sys/time.h")
endif()
endif(NOT WITHOUT_CLIENT)
#
# Copy OpenSSL dlls to the output directory on Windows.
@ -615,12 +633,12 @@ if (UNIX)
execute_process(
COMMAND ${PROJECT_SOURCE_DIR}/scripts/kernel-doc -html ${C_FILES} ${HDR_PUBLIC}
OUTPUT_FILE ${PROJECT_BINARY_DIR}/doc/libwebsockets-api-doc.html
)
ERROR_QUIET)
execute_process(
COMMAND ${PROJECT_SOURCE_DIR}/scripts/kernel-doc -text ${C_FILES} ${HDR_PUBLIC}
OUTPUT_FILE ${PROJECT_BINARY_DIR}/doc/libwebsockets-api-doc.txt
)
ERROR_QUIET)
# Generate and install pkgconfig.
# (This is not indented, because the tabs will be part of the output)

View file

@ -26,6 +26,10 @@
#include <string.h>
#include <signal.h>
#ifdef CMAKE_BUILD
#include "lws_config.h"
#endif
#include "../lib/libwebsockets.h"
static unsigned int opts;

View file

@ -32,6 +32,10 @@
#include <syslog.h>
#include <signal.h>
#ifdef CMAKE_BUILD
#include "lws_config.h"
#endif
#include "../lib/libwebsockets.h"
int force_exit = 0;

View file

@ -26,6 +26,10 @@
#include <string.h>
#include <sys/time.h>
#ifdef CMAKE_BUILD
#include "lws_config.h"
#endif
#include "../lib/libwebsockets.h"
#define LOCAL_RESOURCE_PATH INSTALL_DATADIR"/libwebsockets-test-server"

View file

@ -35,6 +35,10 @@
#include <poll.h>
#endif
#ifdef CMAKE_BUILD
#include "lws_config.h"
#endif
#include <netdb.h>
#include "../lib/libwebsockets.h"