diff --git a/CMakeLists.txt b/CMakeLists.txt index 3628d0998..2dbfd27ae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1089,6 +1089,9 @@ file(RELATIVE_PATH if (DEFINED REL_INCLUDE_DIR) set(LWS__INCLUDE_DIRS "\${LWS_CMAKE_DIR}/${REL_INCLUDE_DIR}") endif() +if (DEFINED OPENSSL_INCLUDE_DIRS) + set(LWS__INCLUDE_DIRS "${LWS__INCLUDE_DIRS};${OPENSSL_INCLUDE_DIRS}") +endif() configure_file(${PROJECT_SOURCE_DIR}/cmake/libwebsockets-config.cmake.in ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/libwebsockets-config.cmake diff --git a/cmake/libwebsockets-config.cmake.in b/cmake/libwebsockets-config.cmake.in index 49482ca1b..6247b2cbe 100644 --- a/cmake/libwebsockets-config.cmake.in +++ b/cmake/libwebsockets-config.cmake.in @@ -1,14 +1,14 @@ # - Config file for lws # It defines the following variables -# LIBWEBSOCKETS_INCLUDE_DIRS - include directories for FooBar +# LIBWEBSOCKETS_INCLUDE_DIRS - include directories for lws # LIBWEBSOCKETS_LIBRARIES - libraries to link against # Get the path of the current file. get_filename_component(LWS_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +list(APPEND CMAKE_MODULE_PATH ${libwebsockets_DIR}) -# Set the include directories. -set(LIBWEBSOCKETS_INCLUDE_DIRS "@LWS__INCLUDE_DIRS@") +set(LIBWEBSOCKETS_INCLUDE_DIRS "@LWS__INCLUDE_DIRS@" "@LWS_PUBLIC_INCLUDES@") # Include the project Targets file, this contains definitions for IMPORTED targets. include(${LWS_CMAKE_DIR}/LibwebsocketsTargets.cmake) @@ -17,8 +17,21 @@ include(${LWS_CMAKE_DIR}/LwsCheckRequirements.cmake) # IMPORTED targets from LibwebsocketsTargets.cmake set(LIBWEBSOCKETS_LIBRARIES websockets websockets_shared) +# These are additional include paths you will need +foreach(item "${LIBWEBSOCKETS_INCLUDE_DIRS}") + include_directories(${item}) + set(CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES}" ${item}) +endforeach() + # These are additional libs that lws wants your app to also link to foreach(item "@LIB_LIST_AT_END@") list(APPEND LIBWEBSOCKETS_DEP_LIBS ${item}) endforeach() +# Move boilerplate for consuming cmake files into here + +include(CheckIncludeFile) +include(CheckCSourceCompiles) +include(LwsCheckRequirements) +set(requirements 1) + diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 20b7e50a0..eef1d27f0 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -119,7 +119,7 @@ CHECK_C_SOURCE_COMPILES(" # after kernel 2.6.37 CHECK_C_SOURCE_COMPILES("#include \nint main(void) { return TCP_USER_TIMEOUT; }\n" LWS_HAVE_TCP_USER_TIMEOUT) - +set(LWS_PUBLIC_INCLUDES "") if (LWS_WITH_TLS) add_subdir_include_dirs(tls) endif() @@ -173,6 +173,8 @@ if (LWS_WITH_STATIC) ) target_include_directories(websockets PRIVATE ${LWS_LIB_BUILD_INC_PATHS}) target_compile_definitions(websockets PRIVATE LWS_BUILDING_STATIC) + target_include_directories(websockets PUBLIC ${LWS_PUBLIC_INCLUDES}) + set(LWS_PUBLIC_INCLUDES ${LWS_PUBLIC_INCLUDES} PARENT_SCOPE) if (WIN32) # Windows uses the same .lib ending for static libraries and shared @@ -199,6 +201,8 @@ if (LWS_WITH_SHARED) ) target_include_directories(websockets_shared PRIVATE ${LWS_LIB_BUILD_INC_PATHS}) target_compile_definitions(websockets_shared PRIVATE LWS_BUILDING_SHARED) + target_include_directories(websockets_shared PUBLIC ${LWS_PUBLIC_INCLUDES}) + set(LWS_PUBLIC_INCLUDES ${LWS_PUBLIC_INCLUDES} PARENT_SCOPE) # We want the shared lib to be named "libwebsockets" # not "libwebsocket_shared". diff --git a/lib/tls/CMakeLists.txt b/lib/tls/CMakeLists.txt index 91ca8be93..aaf4f4a26 100644 --- a/lib/tls/CMakeLists.txt +++ b/lib/tls/CMakeLists.txt @@ -217,12 +217,14 @@ if (LWS_WITH_SSL) if (LWS_WITH_CYASSL) foreach(inc ${WOLFSSL_INCLUDE_DIRS}) set(OPENSSL_INCLUDE_DIRS ${OPENSSL_INCLUDE_DIRS} ${inc} ${inc}/cyassl) - include_directories("${inc}" "${inc}/cyassl") + set(LWS_PUBLIC_INCLUDES ${LWS_PUBLIC_INCLUDES} "${inc}" "${inc}/cyassl") + set(LWS_PUBLIC_INCLUDES ${LWS_PUBLIC_INCLUDES} PARENT_SCOPE) endforeach() else() foreach(inc ${WOLFSSL_INCLUDE_DIRS}) set(OPENSSL_INCLUDE_DIRS ${OPENSSL_INCLUDE_DIRS} ${inc} ${inc}/wolfssl) - include_directories("${inc}" "${inc}/wolfssl") + set(LWS_PUBLIC_INCLUDES ${LWS_PUBLIC_INCLUDES} "${inc}" "${inc}/wolfssl") + set(LWS_PUBLIC_INCLUDES ${LWS_PUBLIC_INCLUDES} PARENT_SCOPE) endforeach() endif() set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${OPENSSL_INCLUDE_DIRS}) @@ -240,7 +242,8 @@ if (LWS_WITH_SSL) message("MBEDTLS libraries: ${MBEDTLS_LIBRARIES}") foreach(inc ${MBEDTLS_INCLUDE_DIRS}) - include_directories("${inc}" "${inc}/mbedtls") + set(LWS_PUBLIC_INCLUDES ${LWS_PUBLIC_INCLUDES} "${inc}" "${inc}/mbedtls") + set(LWS_PUBLIC_INCLUDES ${LWS_PUBLIC_INCLUDES} PARENT_SCOPE) endforeach() list(INSERT LIB_LIST 0 "${MBEDTLS_LIBRARIES}") @@ -269,7 +272,8 @@ if (LWS_WITH_SSL) endif() if (OPENSSL_INCLUDE_DIRS) - include_directories("${OPENSSL_INCLUDE_DIRS}") + set(LWS_PUBLIC_INCLUDES ${LWS_PUBLIC_INCLUDES} "${OPENSSL_INCLUDE_DIRS}") + set(LWS_PUBLIC_INCLUDES ${LWS_PUBLIC_INCLUDES} PARENT_SCOPE) endif() if (NOT LWS_PLAT_FREERTOS) list(INSERT LIB_LIST 0 ${OPENSSL_LIBRARIES}) diff --git a/minimal-examples-lowlevel/api-tests/api-test-async-dns/CMakeLists.txt b/minimal-examples-lowlevel/api-tests/api-test-async-dns/CMakeLists.txt index 6deade98c..199fc7733 100644 --- a/minimal-examples-lowlevel/api-tests/api-test-async-dns/CMakeLists.txt +++ b/minimal-examples-lowlevel/api-tests/api-test-async-dns/CMakeLists.txt @@ -1,14 +1,10 @@ project(lws-api-test-async-dns C) cmake_minimum_required(VERSION 2.8.12) find_package(libwebsockets CONFIG REQUIRED) -list(APPEND CMAKE_MODULE_PATH ${LWS_CMAKE_DIR}) -include(CheckCSourceCompiles) -include(LwsCheckRequirements) set(SAMP lws-api-test-async-dns) set(SRCS main.c) -set(requirements 1) require_lws_config(LWS_ROLE_H1 1 requirements) require_lws_config(LWS_WITH_CLIENT 1 requirements) require_lws_config(LWS_WITH_SYS_ASYNC_DNS 1 requirements) diff --git a/minimal-examples/client/binance/CMakeLists.txt b/minimal-examples/client/binance/CMakeLists.txt index d9897a1f0..4da694e24 100644 --- a/minimal-examples/client/binance/CMakeLists.txt +++ b/minimal-examples/client/binance/CMakeLists.txt @@ -1,14 +1,9 @@ project(lws-minimal-ss-binance C) cmake_minimum_required(VERSION 2.8.12) find_package(libwebsockets CONFIG REQUIRED) -list(APPEND CMAKE_MODULE_PATH ${LWS_CMAKE_DIR}) -include(CheckIncludeFile) -include(CheckCSourceCompiles) -include(LwsCheckRequirements) set(SRCS main.c binance-ss.c) -set(requirements 1) require_lws_config(LWS_ROLE_WS 1 requirements) require_lws_config(LWS_WITH_CLIENT 1 requirements) require_lws_config(LWS_WITHOUT_EXTENSIONS 0 requirements) @@ -48,6 +43,4 @@ if (requirements) ${LIBWEBSOCKETS_DEP_LIBS}) endif() endif() - - endif() diff --git a/minimal-examples/client/hello_world/CMakeLists.txt b/minimal-examples/client/hello_world/CMakeLists.txt index 632117210..8b389c505 100644 --- a/minimal-examples/client/hello_world/CMakeLists.txt +++ b/minimal-examples/client/hello_world/CMakeLists.txt @@ -1,11 +1,7 @@ project(lws-minimal-ss-hello_world C) cmake_minimum_required(VERSION 2.8.12) find_package(libwebsockets CONFIG REQUIRED) -list(APPEND CMAKE_MODULE_PATH ${LWS_CMAKE_DIR}) -include(CheckCSourceCompiles) -include(LwsCheckRequirements) -set(requirements 1) require_lws_config(LWS_ROLE_H1 1 requirements) require_lws_config(LWS_WITHOUT_CLIENT 0 requirements) require_lws_config(LWS_WITH_SECURE_STREAMS 1 requirements) diff --git a/minimal-examples/client/http-post/CMakeLists.txt b/minimal-examples/client/http-post/CMakeLists.txt index 6a4a47a19..927335f2b 100644 --- a/minimal-examples/client/http-post/CMakeLists.txt +++ b/minimal-examples/client/http-post/CMakeLists.txt @@ -1,11 +1,7 @@ project(lws-minimal-ss-http-post C) cmake_minimum_required(VERSION 2.8.12) find_package(libwebsockets CONFIG REQUIRED) -list(APPEND CMAKE_MODULE_PATH ${LWS_CMAKE_DIR}) -include(CheckCSourceCompiles) -include(LwsCheckRequirements) -set(requirements 1) require_lws_config(LWS_ROLE_H1 1 requirements) require_lws_config(LWS_WITHOUT_CLIENT 0 requirements) require_lws_config(LWS_WITH_SECURE_STREAMS 1 requirements) diff --git a/minimal-examples/client/ws-echo/CMakeLists.txt b/minimal-examples/client/ws-echo/CMakeLists.txt index 86759e4bb..37c89925a 100644 --- a/minimal-examples/client/ws-echo/CMakeLists.txt +++ b/minimal-examples/client/ws-echo/CMakeLists.txt @@ -1,11 +1,7 @@ project(lws-minimal-ss-ws-echo C) cmake_minimum_required(VERSION 2.8.12) find_package(libwebsockets CONFIG REQUIRED) -list(APPEND CMAKE_MODULE_PATH ${LWS_CMAKE_DIR}) -include(CheckCSourceCompiles) -include(LwsCheckRequirements) -set(requirements 1) require_lws_config(LWS_ROLE_H1 1 requirements) require_lws_config(LWS_WITHOUT_CLIENT 0 requirements) require_lws_config(LWS_WITH_SECURE_STREAMS 1 requirements) diff --git a/minimal-examples/server/hello_world/CMakeLists.txt b/minimal-examples/server/hello_world/CMakeLists.txt index 1a8fada6d..990ccf4c3 100644 --- a/minimal-examples/server/hello_world/CMakeLists.txt +++ b/minimal-examples/server/hello_world/CMakeLists.txt @@ -1,13 +1,9 @@ project(lws-minimal-ss-server-hello_world C) cmake_minimum_required(VERSION 2.8.12) find_package(libwebsockets CONFIG REQUIRED) -list(APPEND CMAKE_MODULE_PATH ${LWS_CMAKE_DIR}) -include(CheckCSourceCompiles) -include(LwsCheckRequirements) set(SRCS main.c ss-server.c) -set(requirements 1) require_lws_config(LWS_ROLE_H1 1 requirements) require_lws_config(LWS_WITH_SERVER 1 requirements) require_lws_config(LWS_WITH_SYS_SMD 1 requirements) diff --git a/minimal-examples/ssproxy/ssproxy-custom-transport-uart/CMakeLists.txt b/minimal-examples/ssproxy/ssproxy-custom-transport-uart/CMakeLists.txt index 4f9db511f..2f2a0318a 100644 --- a/minimal-examples/ssproxy/ssproxy-custom-transport-uart/CMakeLists.txt +++ b/minimal-examples/ssproxy/ssproxy-custom-transport-uart/CMakeLists.txt @@ -1,13 +1,9 @@ project(lws-minimal-ssproxy-custom-transport-uart C) cmake_minimum_required(VERSION 2.8.12) find_package(libwebsockets CONFIG REQUIRED) -list(APPEND CMAKE_MODULE_PATH ${LWS_CMAKE_DIR}) -include(CheckCSourceCompiles) -include(LwsCheckRequirements) set(SRCS main.c transport-serial.c) -set(requirements 1) require_lws_config(LWS_ROLE_H1 1 requirements) require_lws_config(LWS_WITHOUT_CLIENT 0 requirements) require_lws_config(LWS_WITH_SECURE_STREAMS 1 requirements) diff --git a/minimal-examples/ssproxy/ssproxy-socket/CMakeLists.txt b/minimal-examples/ssproxy/ssproxy-socket/CMakeLists.txt index db257bf4d..c49586fb2 100644 --- a/minimal-examples/ssproxy/ssproxy-socket/CMakeLists.txt +++ b/minimal-examples/ssproxy/ssproxy-socket/CMakeLists.txt @@ -1,13 +1,9 @@ project(lws-minimal-ss-proxy C) cmake_minimum_required(VERSION 2.8.12) find_package(libwebsockets CONFIG REQUIRED) -list(APPEND CMAKE_MODULE_PATH ${LWS_CMAKE_DIR}) -include(CheckCSourceCompiles) -include(LwsCheckRequirements) set(SRCS main.c) -set(requirements 1) require_lws_config(LWS_ROLE_H1 1 requirements) require_lws_config(LWS_WITHOUT_CLIENT 0 requirements) require_lws_config(LWS_WITH_SECURE_STREAMS 1 requirements)