mirror of
https://github.com/warmcat/libwebsockets.git
synced 2025-03-16 00:00:07 +01:00

This adds an lws cmake option that builds all the minimal examples as part of lws, it's useful for QA. It adds a macro to examples that depend on a particular lws configuration to understand they should just null out their project definition in builds where the lws configuration requirement is not met, and we are building as part of lws. It also adapts all the example library additions to select the just-built-but-not-yet-installed library in the case it is built as part of lws. If built standalone, it now uses the cmake platform-abstracted way to add the library requirement too.
77 lines
No EOL
1.8 KiB
CMake
77 lines
No EOL
1.8 KiB
CMake
cmake_minimum_required(VERSION 2.8.9)
|
|
include(CheckSymbolExists)
|
|
|
|
set(SAMP lws-minimal-ws-server-pmd-bulk)
|
|
set(SRCS minimal-ws-server-pmd-bulk.c)
|
|
|
|
# If we are being built as part of lws, confirm current build config supports
|
|
# reqconfig, else skip building ourselves.
|
|
#
|
|
# If we are being built externally, confirm installed lws was configured to
|
|
# support reqconfig, else error out with a helpful message about the problem.
|
|
#
|
|
MACRO(require_lws_config reqconfig _val result)
|
|
|
|
if (DEFINED ${reqconfig})
|
|
if (${reqconfig})
|
|
set (rq 1)
|
|
else()
|
|
set (rq 0)
|
|
endif()
|
|
else()
|
|
set(rq 0)
|
|
endif()
|
|
|
|
if (${_val} EQUAL ${rq})
|
|
set(SAME 1)
|
|
else()
|
|
set(SAME 0)
|
|
endif()
|
|
|
|
if (LWS_WITH_MINIMAL_EXAMPLES AND NOT ${SAME})
|
|
if (${_val})
|
|
message("${SAMP}: skipping as lws being built without ${reqconfig}")
|
|
else()
|
|
message("${SAMP}: skipping as lws built with ${reqconfig}")
|
|
endif()
|
|
set(${result} 0)
|
|
else()
|
|
if (LWS_WITH_MINIMAL_EXAMPLES)
|
|
set(MET ${SAME})
|
|
else()
|
|
CHECK_SYMBOL_EXISTS(${reqconfig} libwebsockets.h HAS)
|
|
if (NOT DEFINED HAS)
|
|
set(HAS 0)
|
|
endif()
|
|
if ((HAS AND ${_val}) OR (NOT HAS AND NOT ${_val}))
|
|
set(MET 1)
|
|
else()
|
|
set(MET 0)
|
|
endif()
|
|
|
|
endif()
|
|
if (NOT MET)
|
|
if (${_val})
|
|
message(FATAL_ERROR "This project requires lws must have been configured with ${reqconfig}")
|
|
else()
|
|
message(FATAL_ERROR "Lws configuration of ${reqconfig} is incompatible with this project")
|
|
endif()
|
|
endif()
|
|
|
|
endif()
|
|
ENDMACRO()
|
|
|
|
set(requirements 1)
|
|
require_lws_config(LWS_WITHOUT_SERVER 0 requirements)
|
|
require_lws_config(LWS_WITHOUT_EXTENSIONS 0 requirements)
|
|
|
|
if (requirements)
|
|
add_executable(${SAMP} ${SRCS})
|
|
|
|
if (websockets_shared)
|
|
target_link_libraries(${SAMP} websockets_shared)
|
|
add_dependencies(${SAMP} websockets_shared)
|
|
else()
|
|
target_link_libraries(${SAMP} websockets)
|
|
endif()
|
|
endif() |