aboutsummaryrefslogtreecommitdiff
path: root/lib/abstract
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/abstract
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/abstract')
-rw-r--r--lib/abstract/CMakeLists.txt57
1 files changed, 57 insertions, 0 deletions
diff --git a/lib/abstract/CMakeLists.txt b/lib/abstract/CMakeLists.txt
new file mode 100644
index 00000000..3496c6ee
--- /dev/null
+++ b/lib/abstract/CMakeLists.txt
@@ -0,0 +1,57 @@
+#
+# 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(.)
+
+list(APPEND SOURCES
+ abstract/abstract.c
+)
+if (LWS_WITH_SEQUENCER)
+ list(APPEND SOURCES
+ abstract/test-sequencer.c)
+endif()
+
+list(APPEND SOURCES
+ abstract/transports/unit-test.c)
+
+#if (LWS_WITH_SMTP)
+# list(APPEND SOURCES
+# abstract/protocols/smtp/smtp.c
+# abstract/protocols/smtp/smtp-sequencer.c
+# )
+#endif()
+
+#
+# Keep explicit parent scope exports at end
+#
+
+exports_to_parent_scope()
+