X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=CMakeLists.txt;h=e6da2208582a4b44056133c2a24c9897b0670998;hb=refs%2Fheads%2Ftizen_5.5;hp=b33f5dc980b87a05edeb22669a28ca34b219d3f1;hpb=00ae90978b6f874a008dc565574193192ab39f00;p=platform%2Fupstream%2Flibwebsockets.git diff --git a/CMakeLists.txt b/CMakeLists.txt index b33f5dc..e6da220 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,12 +9,12 @@ project(libwebsockets C) set(PACKAGE "libwebsockets") set(CPACK_PACKAGE_NAME "${PACKAGE}") set(CPACK_PACKAGE_VERSION_MAJOR "2") -set(CPACK_PACKAGE_VERSION_MINOR "2") +set(CPACK_PACKAGE_VERSION_MINOR "3") set(CPACK_PACKAGE_VERSION_PATCH "0") set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") set(CPACK_PACKAGE_VENDOR "andy@warmcat.com") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PACKAGE} ${PACKAGE_VERSION}") -set(SOVERSION "10") +set(SOVERSION "11") if(NOT CPACK_GENERATOR) if(UNIX) set(CPACK_GENERATOR "TGZ") @@ -95,10 +95,10 @@ option(LWS_WITH_LATENCY "Build latency measuring code into the library" OFF) option(LWS_WITHOUT_DAEMONIZE "Don't build the daemonization api" ON) option(LWS_IPV6 "Compile with support for ipv6" OFF) option(LWS_UNIX_SOCK "Compile with support for UNIX domain socket" OFF) -option(LWS_WITH_HTTP2 "Compile with support for http2" OFF) +#option(LWS_WITH_HTTP2 "Compile with support for http2" OFF) option(LWS_SSL_SERVER_WITH_ECDH_CERT "Include SSL server use ECDH certificate" OFF) option(LWS_WITH_CGI "Include CGI (spawn process with network-connected stdin/out/err) APIs" OFF) -option(LWS_WITH_HTTP_PROXY "Support for rewriting HTTP proxying" OFF) +option(LWS_WITH_HTTP_PROXY "Support for rewriting HTTP proxying (requires libhubbub)" OFF) option(LWS_WITH_LWSWS "Libwebsockets Webserver" OFF) option(LWS_WITH_PLUGINS "Support plugins for protocols and extensions" OFF) option(LWS_WITH_ACCESS_LOG "Support generating Apache-compatible access logs" OFF) @@ -117,6 +117,8 @@ option(LWS_WITH_RANGES "Support http ranges (RFC7233)" ON) option(LWS_FALLBACK_GETHOSTBYNAME "Also try to do dns resolution using gethostbyname if getaddrinfo fails" OFF) option(LWS_WITH_ZIP_FOPS "Support serving pre-zipped files" ON) option(LWS_AVOID_SIGPIPE_IGN "Android 7+ seems to need this" OFF) +option(LWS_WITH_STATS "Keep statistics of lws internal operations" OFF) +option(LWS_WITH_SOCKS5 "Allow use of SOCKS5 proxy on client connections" OFF) if (LWS_WITH_LWSWS) message(STATUS "LWS_WITH_LWSWS --> Enabling LWS_WITH_PLUGINS and LWS_WITH_LIBUV") @@ -324,19 +326,14 @@ if (LWS_WITH_SQLITE3) endif() -# FIXME: This must be runtime-only option. # The base dir where the test-apps look for the SSL certs. set(LWS_OPENSSL_CLIENT_CERTS ../share CACHE PATH "Server SSL certificate directory") if (WIN32) set(LWS_OPENSSL_CLIENT_CERTS . CACHE PATH "Client SSL certificate directory") - if (LWS_IPV6) - set(LWS_IPV6 OFF) - message(WARNING "IPv6 does not currently work on Windows!") - endif() - if (LWS_UNIX_SOCK) + if (LWS_UNIX_SOCK) set(LWS_UNIX_SOCK OFF) - message(WARNING "Windows does not support UNIX domain sockets") + message(WARNING "Windows does not support UNIX domain sockets") endif() else() set(LWS_OPENSSL_CLIENT_CERTS /etc/pki/tls/certs/ CACHE PATH "Client SSL certificate directory") @@ -395,7 +392,7 @@ if (LWS_WITH_HTTP2) endif() if ("${LWS_MAX_SMP}" STREQUAL "") - set(LWS_MAX_SMP 32) + set(LWS_MAX_SMP 1) endif() @@ -473,6 +470,9 @@ CHECK_FUNCTION_EXISTS(snprintf LWS_HAVE_SNPRINTF) CHECK_FUNCTION_EXISTS(_snprintf LWS_HAVE__SNPRINTF) CHECK_FUNCTION_EXISTS(_vsnprintf LWS_HAVE__VSNPRINTF) CHECK_FUNCTION_EXISTS(getloadavg LWS_HAVE_GETLOADAVG) +CHECK_FUNCTION_EXISTS(atoll LWS_HAVE_ATOLL) +CHECK_FUNCTION_EXISTS(_atoi64 LWS_HAVE__ATOI64) +CHECK_FUNCTION_EXISTS(_stat32i64 LWS_HAVE__STAT32I64) if (NOT LWS_HAVE_GETIFADDRS) if (LWS_WITHOUT_BUILTIN_GETIFADDRS) @@ -498,6 +498,9 @@ CHECK_INCLUDE_FILE(sys/stat.h LWS_HAVE_SYS_STAT_H) CHECK_INCLUDE_FILE(sys/types.h LWS_HAVE_SYS_TYPES_H) CHECK_INCLUDE_FILE(unistd.h LWS_HAVE_UNISTD_H) CHECK_INCLUDE_FILE(vfork.h LWS_HAVE_VFORK_H) +CHECK_INCLUDE_FILE(sys/capability.h LWS_HAVE_SYS_CAPABILITY_H) + +CHECK_LIBRARY_EXISTS(cap cap_set_flag "" LWS_HAVE_LIBCAP) if (LWS_WITH_LIBUV) CHECK_INCLUDE_FILE(uv-version.h LWS_HAVE_UV_VERSION_H) @@ -514,6 +517,12 @@ set(LWS_HAVE_WORKING_VFORK LWS_HAVE_VFORK) CHECK_INCLUDE_FILES("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS) +CHECK_C_SOURCE_COMPILES("#include + int main(void) { + intptr_t test = 1; + return 0; + }" LWS_HAS_INTPTR_T) + # These don't work Cross... #CHECK_TYPE_SIZE(pid_t PID_T_SIZE) #CHECK_TYPE_SIZE(size_t SIZE_T_SIZE) @@ -732,7 +741,7 @@ if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR (CMAKE_C_COMPILER_ID endif () if ((CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) AND NOT LWS_WITHOUT_TESTAPPS) - if (UNIX) + if (UNIX AND LWS_MAX_SMP GREATER 1) # jeez clang understands -pthread but dies if he sees it at link time! # http://stackoverflow.com/questions/2391194/what-is-gs-pthread-equiv-in-clang set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread" ) @@ -772,13 +781,13 @@ if (LWS_WITH_STATIC) endif() add_custom_command( TARGET websockets - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/lib/libwebsockets.h - ${CMAKE_BINARY_DIR}/include/libwebsockets.h + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/lib/libwebsockets.h + ${CMAKE_CURRENT_BINARY_DIR}/include/libwebsockets.h ) add_custom_command( TARGET websockets - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/lws_config.h - ${CMAKE_BINARY_DIR}/include/lws_config.h + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/lws_config.h + ${CMAKE_CURRENT_BINARY_DIR}/include/lws_config.h ) endif() @@ -811,13 +820,13 @@ if (LWS_WITH_SHARED) add_custom_command( TARGET websockets_shared - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/lib/libwebsockets.h - ${CMAKE_BINARY_DIR}/include/libwebsockets.h + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/lib/libwebsockets.h + ${CMAKE_CURRENT_BINARY_DIR}/include/libwebsockets.h ) add_custom_command( TARGET websockets_shared - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/lws_config.h - ${CMAKE_BINARY_DIR}/include/lws_config.h + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/lws_config.h + ${CMAKE_CURRENT_BINARY_DIR}/include/lws_config.h ) @@ -1019,6 +1028,12 @@ if (UNIX) list(APPEND LIB_LIST m) endif() +if (LWS_HAVE_LIBCAP) + list(APPEND LIB_LIST cap ) +endif() + + + # Setup the linking for all libs. foreach (lib ${LWS_LIBRARIES}) target_link_libraries(${lib} ${LIB_LIST}) @@ -1027,7 +1042,14 @@ endforeach() set (temp ${CMAKE_REQUIRED_LIBRARIES}) set(CMAKE_REQUIRED_LIBRARIES ${LIB_LIST}) CHECK_FUNCTION_EXISTS(SSL_CTX_set1_param LWS_HAVE_SSL_CTX_set1_param) +CHECK_FUNCTION_EXISTS(SSL_set_info_callback LWS_HAVE_SSL_SET_INFO_CALLBACK) CHECK_FUNCTION_EXISTS(X509_VERIFY_PARAM_set1_host LWS_HAVE_X509_VERIFY_PARAM_set1_host) +if (LWS_WITH_ESP32) + set(LWS_HAVE_TLS_CLIENT_METHOD 1) +else() +CHECK_FUNCTION_EXISTS(TLS_client_method LWS_HAVE_TLS_CLIENT_METHOD) +CHECK_FUNCTION_EXISTS(TLSv1_2_client_method LWS_HAVE_TLSV1_2_CLIENT_METHOD) +endif() set(CMAKE_REQUIRED_LIBRARIES ${temp}) # Generate the lws_config.h that includes all the public compilation settings. configure_file( @@ -1111,7 +1133,8 @@ if (GENCERTS) 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) + # OUTPUT_QUIET ERROR_QUIET + ) if (OPENSSL_RETURN_CODE) message(WARNING "!!! Failed to generate SSL certificate for Test Server!!!:\nOpenSSL return code = ${OPENSSL_RETURN_CODE}") @@ -1224,9 +1247,9 @@ if (NOT LWS_WITHOUT_TESTAPPS) 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" "" @@ -1235,14 +1258,14 @@ if (NOT LWS_WITHOUT_TESTAPPS) "" "") endif() - if (UNIX AND NOT ((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))) + if (UNIX AND NOT ((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) AND LWS_MAX_SMP GREATER 1) 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) @@ -1250,19 +1273,21 @@ if (NOT LWS_WITHOUT_TESTAPPS) "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") + "" + "" + "") + # libev generates a big mess of warnings with gcc, maintainers blame gcc + set_source_files_properties( test-server/test-server-libev.c PROPERTIES COMPILE_FLAGS "-Wno-error" ) 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() if (NOT ((CMAKE_C_COMPILER_ID MATCHES "Clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) AND LWS_WITH_LIBEVENT) @@ -1270,9 +1295,9 @@ if (NOT LWS_WITHOUT_TESTAPPS) "test-server/test-server-libevent.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() @@ -1283,9 +1308,9 @@ if (NOT LWS_WITHOUT_TESTAPPS) 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 @@ -1418,6 +1443,8 @@ if (NOT LWS_WITHOUT_TESTAPPS) endmacro() + create_plugin(protocol_lws_meta + "plugins/protocol_lws_meta.c" "" "") create_plugin(protocol_dumb_increment "plugins/protocol_dumb_increment.c" "" "") create_plugin(protocol_lws_mirror @@ -1535,6 +1562,7 @@ includedir=\${prefix}/include Name: libwebsockets Description: Websockets server and client library Version: ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH} +Requires: openssl Libs: -L\${libdir} -lwebsockets Cflags: -I\${includedir}" @@ -1542,6 +1570,27 @@ Cflags: -I\${includedir}" install(FILES "${PROJECT_BINARY_DIR}/libwebsockets.pc" DESTINATION lib${LIB_SUFFIX}/pkgconfig) + +file(WRITE "${PROJECT_BINARY_DIR}/libwebsockets_static.pc" +"prefix=\"${CMAKE_INSTALL_PREFIX}\" +exec_prefix=\${prefix} +libdir=\${exec_prefix}/lib${LIB_SUFFIX} +includedir=\${prefix}/include + +Name: libwebsockets_static +Description: Websockets server and client static library +Version: ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH} +Requires: openssl + +Libs: -L\${libdir} -lwebsockets_static +Libs.private: +Cflags: -I\${includedir}" +) + + install(FILES "${PROJECT_BINARY_DIR}/libwebsockets_static.pc" + DESTINATION lib${LIB_SUFFIX}/pkgconfig) + + endif(UNIX) # @@ -1611,8 +1660,8 @@ set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Libraries") set(CPACK_COMPONENT_DEV_DISPLAY_NAME "Development files") # Install test apps. -if (NOT LWS_WITHOUT_TESTAPPS AND NOT LWS_WITHOUT_CLIENT) - install(TARGETS test-client ${TEST_APP_LIST} +if (NOT LWS_WITHOUT_TESTAPPS) + install(TARGETS ${TEST_APP_LIST} RUNTIME DESTINATION ${LWS_INSTALL_EXAMPLES_DIR} COMPONENT examples) set(CPACK_COMPONENT_EXAMPLES_DISPLAY_NAME "Example files") @@ -1761,13 +1810,21 @@ message(" LWS_PLAT_OPTEE = ${LWS_PLAT_OPTEE}") message(" LWS_WITH_ESP32 = ${LWS_WITH_ESP32}") message(" LWS_WITH_ZIP_FOPS = ${LWS_WITH_ZIP_FOPS}") message(" LWS_AVOID_SIGPIPE_IGN = ${LWS_AVOID_SIGPIPE_IGN}") +message(" LWS_WITH_STATS = ${LWS_WITH_STATS}") +message(" LWS_WITH_SOCKS5 = ${LWS_WITH_SOCKS5}") +message(" LWS_HAVE_SYS_CAPABILITY_H = ${LWS_HAVE_SYS_CAPABILITY_H}") +message(" LWS_HAVE_LIBCAP = ${LWS_HAVE_LIBCAP}") +message(" LWS_HAVE_ATOLL = ${LWS_HAVE_ATOLL}") +message(" LWS_HAVE__ATOI64 = ${LWS_HAVE__ATOI64}") +message(" LWS_HAVE_STAT32I64 = ${LWS_HAVE_STAT32I64}") +message(" LWS_HAS_INTPTR_T = ${LWS_HAS_INTPTR_T}") message("---------------------------------------------------------------------") # These will be available to parent projects including libwebsockets using add_subdirectory() set(LIBWEBSOCKETS_LIBRARIES ${LWS_LIBRARIES} CACHE STRING "Libwebsocket libraries") if (LWS_WITH_STATIC) - set(LIBWEBSOCKETS_LIBRARIES_STATIC websocket CACHE STRING "Libwebsocket static library") + set(LIBWEBSOCKETS_LIBRARIES_STATIC websockets CACHE STRING "Libwebsocket static library") endif() if (LWS_WITH_SHARED) set(LIBWEBSOCKETS_LIBRARIES_SHARED websockets_shared CACHE STRING "Libwebsocket shared library")