summaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authorIvan Zhakov <ivan@apache.org>2024-07-20 18:18:18 +0200
committerIvan Zhakov <ivan@apache.org>2024-07-20 18:18:18 +0200
commit55c5d07a2d56109b7edaf399fbeabaf4dfaf6264 (patch)
treefbb3b3547a0041aaec5e01b42db4166c6087c1e1 /build
parent* .github/workflows/windows.yml: Enable VCPKG artifacts caching. (diff)
downloadapache2-55c5d07a2d56109b7edaf399fbeabaf4dfaf6264.tar.xz
apache2-55c5d07a2d56109b7edaf399fbeabaf4dfaf6264.zip
Remove awk dependency when building using CMake. Before this awk was required
for -DWITH_MODULES option. * build/build-modules-c.cmake: (generate_builtin_modules_c): Function to generate modules.c. * CMakeLists.txt (): Use generate_builtin_modules_c() instead of `awk -f build/build-modules-c.awk` to generate modules.c file. * README.cmake: (Prerequisites, How to build): Do not mention awk as prerequisite. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1919413 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'build')
-rw-r--r--build/build-modules-c.cmake83
1 files changed, 83 insertions, 0 deletions
diff --git a/build/build-modules-c.cmake b/build/build-modules-c.cmake
new file mode 100644
index 0000000000..9d4ac6cc2d
--- /dev/null
+++ b/build/build-modules-c.cmake
@@ -0,0 +1,83 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+function(generate_builtin_modules_c output_filename module_list)
+ list(PREPEND module_list "core")
+
+ set(content "")
+
+ string(APPEND content "/*\n")
+ string(APPEND content " * modules.c --- automatically generated by Apache\n")
+ string(APPEND content " * configuration script. DO NOT HAND EDIT!!!!!\n")
+ string(APPEND content " */\n")
+ string(APPEND content "\n")
+ string(APPEND content "#include \"ap_config.h\"\n")
+ string(APPEND content "#include \"httpd.h\"\n")
+ string(APPEND content "#include \"http_config.h\"\n")
+ string(APPEND content "\n")
+
+ foreach(module ${module_list})
+ string(APPEND content "extern module ${module}_module\;\n")
+ endforeach()
+
+ string(APPEND content "\n")
+ string(APPEND content "/*\n")
+ string(APPEND content " * Modules which implicitly form the\n")
+ string(APPEND content " * list of activated modules on startup,\n")
+ string(APPEND content " * i.e. these are the modules which are\n")
+ string(APPEND content " * initially linked into the Apache processing\n")
+ string(APPEND content " * [extendable under run-time via AddModule]\n")
+ string(APPEND content " */\n")
+
+ string(APPEND content "AP_DECLARE_DATA module *ap_prelinked_modules[] = {\n")
+ foreach(module ${module_list})
+ string(APPEND content " &${module}_module,\n")
+ endforeach()
+ string(APPEND content " NULL\n")
+ string(APPEND content "}\;\n")
+
+ string(APPEND content "\n")
+ string(APPEND content "/*\n")
+ string(APPEND content " * We need the symbols as strings for <IfModule> containers\n")
+ string(APPEND content " */\n")
+ string(APPEND content "\n")
+ string(APPEND content "ap_module_symbol_t ap_prelinked_module_symbols[] = {\n")
+
+ foreach(module ${module_list})
+ string(APPEND content " {\"${module}_module\", &${module}_module},\n")
+ endforeach()
+
+ string(APPEND content " {NULL, NULL}\n")
+ string(APPEND content "}\;\n")
+ string(APPEND content "\n")
+ string(APPEND content "/*\n")
+ string(APPEND content " * Modules which initially form the\n")
+ string(APPEND content " * list of available modules on startup,\n")
+ string(APPEND content " * i.e. these are the modules which are\n")
+ string(APPEND content " * initially loaded into the Apache process\n")
+ string(APPEND content " * [extendable under run-time via LoadModule]\n")
+ string(APPEND content " */\n")
+ string(APPEND content "module *ap_preloaded_modules[] = {\n")
+
+ foreach(module ${module_list})
+ string(APPEND content " &${module}_module,\n")
+ endforeach()
+
+ string(APPEND content " NULL\n")
+ string(APPEND content "}\;\n")
+ string(APPEND content "\n")
+
+ file(WRITE ${output_filename} ${content})
+endfunction()