aboutsummaryrefslogtreecommitdiff
path: root/lib/roles/CMakeLists.txt
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 /lib/roles/CMakeLists.txt
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 'lib/roles/CMakeLists.txt')
-rw-r--r--lib/roles/CMakeLists.txt88
1 files changed, 88 insertions, 0 deletions
diff --git a/lib/roles/CMakeLists.txt b/lib/roles/CMakeLists.txt
new file mode 100644
index 00000000..e92dd3e4
--- /dev/null
+++ b/lib/roles/CMakeLists.txt
@@ -0,0 +1,88 @@
+#
+# libwebsockets - small server side websockets and web server implementation
+#
+# Copyright (C) 2010 - 2020 Andy Green <andy@warmcat.com>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+#
+# The strategy is to only export to PARENT_SCOPE
+#
+# - changes to LIB_LIST
+# - changes to SOURCES
+# - includes via include_directories
+#
+# and keep everything else private
+
+include_directories(.)
+
+if (LWS_ROLE_MQTT)
+ add_subdir_include_directories(mqtt)
+endif()
+
+if (LWS_ROLE_DBUS AND NOT LWS_PLAT_FREERTOS)
+ add_subdir_include_directories(dbus)
+endif()
+
+if (LWS_ROLE_H1 OR LWS_ROLE_H2)
+ add_subdir_include_directories(http)
+endif()
+
+if (LWS_ROLE_H1)
+ add_subdir_include_directories(h1)
+endif()
+
+if (LWS_ROLE_H2)
+ add_subdir_include_directories(h2)
+endif()
+
+if (LWS_ROLE_WS)
+ add_subdir_include_directories(ws)
+endif()
+
+if (LWS_ROLE_RAW)
+ add_subdir_include_directories(raw-skt)
+endif()
+
+if (LWS_ROLE_RAW_FILE)
+ add_subdir_include_directories(raw-file)
+endif()
+
+if (LWS_WITH_CGI)
+ add_subdir_include_directories(cgi)
+endif()
+
+if (LWS_ROLE_RAW_PROXY)
+ add_subdir_include_directories(raw-proxy)
+endif()
+
+if (NOT LWS_WITHOUT_SERVER OR LWS_WITH_SECURE_STREAMS_PROCESS_API)
+ add_subdir_include_directories(listen)
+endif()
+
+if (NOT LWS_WITHOUT_CLIENT)
+ list(APPEND SOURCES
+ roles/http/client/client-http.c
+ roles/http/client/client-handshake.c)
+endif()
+
+#
+# Keep explicit parent scope exports at end
+#
+
+exports_to_parent_scope()