aboutsummaryrefslogtreecommitdiff
path: root/minimal-examples/dbus-client
diff options
context:
space:
mode:
authorAndy Green <andy@warmcat.com>2020-05-22 16:47:40 +0100
committerAndy Green <andy@warmcat.com>2020-05-27 08:40:12 +0100
commitb3131fdfddf408a26203ba86844858758d01ae46 (patch)
tree5cbddd764a935e6c7f5c05be823e04fa9033c4a8 /minimal-examples/dbus-client
parentcabe0219555381f23b7231a1c481bbb60291a9c0 (diff)
downloadlibwebsockets-b3131fdfddf408a26203ba86844858758d01ae46.tar.gz
cmakelist: Augean Stables refactor
Establish a new distributed CMake architecture with CMake code related to a source directory moving to be in the subdir in its own CMakeLists.txt. In particular, there's now one in ./lib which calls through to ones further down the directory tree like ./lib/plat/xxx, ./lib/roles/xxx etc. This cuts the main CMakelists.txt from 98KB -> 33KB, about a 66% reduction, and it's much easier to maintain sub-CMakeLists.txt that are in the same directory as the sources they manage, and conceal all the details that that level. Child CMakelists.txt become responsible for: - include_directories() definition (this is not supported by CMake directly, it passes it back up via PARENT_SCOPE vars in helper macros) - Addition child CMakeLists.txt inclusion, for example toplevel -> role -> role subdir - Source file addition to the build - Dependent library path resolution... this is now a private thing in the child CMakeLists.txt, it just passes back any adaptations to include_directories() and the LIB_LIST without filling the parent namespace with the details
Diffstat (limited to 'minimal-examples/dbus-client')
-rw-r--r--minimal-examples/dbus-client/minimal-dbus-client/CMakeLists.txt64
-rw-r--r--minimal-examples/dbus-client/minimal-dbus-ws-proxy-testclient/CMakeLists.txt67
2 files changed, 8 insertions, 123 deletions
diff --git a/minimal-examples/dbus-client/minimal-dbus-client/CMakeLists.txt b/minimal-examples/dbus-client/minimal-dbus-client/CMakeLists.txt
index 3e361b4e..ee42b478 100644
--- a/minimal-examples/dbus-client/minimal-dbus-client/CMakeLists.txt
+++ b/minimal-examples/dbus-client/minimal-dbus-client/CMakeLists.txt
@@ -1,75 +1,19 @@
project(lws-minimal-dbus-client)
cmake_minimum_required(VERSION 2.8)
+find_package(libwebsockets CONFIG REQUIRED)
+list(APPEND CMAKE_MODULE_PATH ${LWS_CMAKE_DIR})
include(CheckCSourceCompiles)
include(CheckLibraryExists)
+include(LwsCheckRequirements)
set(SAMP lws-minimal-dbus-client)
set(SRCS minimal-dbus-client.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_C_SOURCE_COMPILES("#include <libwebsockets.h>\nint main(void) {\n#if defined(${reqconfig})\n return 0;\n#else\n fail;\n#endif\n return 0;\n}\n" HAS_${reqconfig})
- if (NOT DEFINED HAS_${reqconfig} OR NOT HAS_${reqconfig})
- set(HAS_${reqconfig} 0)
- else()
- set(HAS_${reqconfig} 1)
- endif()
- if ((HAS_${reqconfig} AND ${_val}) OR (NOT HAS_${reqconfig} 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_ROLE_DBUS 1 requirements)
require_lws_config(LWS_WITH_CLIENT 1 requirements)
-if (requirements)
+if (NOT MSVC AND NOT WIN32 AND requirements)
add_executable(${SAMP} ${SRCS})
if (NOT LWS_PLAT_FREERTOS)
diff --git a/minimal-examples/dbus-client/minimal-dbus-ws-proxy-testclient/CMakeLists.txt b/minimal-examples/dbus-client/minimal-dbus-ws-proxy-testclient/CMakeLists.txt
index dbc8195f..c7443f5d 100644
--- a/minimal-examples/dbus-client/minimal-dbus-ws-proxy-testclient/CMakeLists.txt
+++ b/minimal-examples/dbus-client/minimal-dbus-ws-proxy-testclient/CMakeLists.txt
@@ -1,75 +1,16 @@
project(lws-minimal-dbus-ws-proxy-testclient)
cmake_minimum_required(VERSION 2.8)
+find_package(libwebsockets CONFIG REQUIRED)
+list(APPEND CMAKE_MODULE_PATH ${LWS_CMAKE_DIR})
include(CheckCSourceCompiles)
include(CheckLibraryExists)
-
-set(SAMP lws-minimal-dbus-ws-proxy-testclient)
-set(SRCS minimal-dbus-ws-proxy-testclient.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_C_SOURCE_COMPILES("#include <libwebsockets.h>\nint main(void) {\n#if defined(${reqconfig})\n return 0;\n#else\n fail;\n#endif\n return 0;\n}\n" HAS_${reqconfig})
- if (NOT DEFINED HAS_${reqconfig} OR NOT HAS_${reqconfig})
- set(HAS_${reqconfig} 0)
- else()
- set(HAS_${reqconfig} 1)
- endif()
- if ((HAS_${reqconfig} AND ${_val}) OR (NOT HAS_${reqconfig} 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()
-
+include(LwsCheckRequirements)
set(requirements 1)
require_lws_config(LWS_ROLE_DBUS 1 requirements)
require_lws_config(LWS_WITH_CLIENT 1 requirements)
-if (requirements)
+if (NOT MSVC AND NOT WIN32 AND requirements)
add_executable(${SAMP} ${SRCS})
if (NOT LWS_PLAT_FREERTOS)