From 55c5d07a2d56109b7edaf399fbeabaf4dfaf6264 Mon Sep 17 00:00:00 2001 From: Ivan Zhakov Date: Sat, 20 Jul 2024 16:18:18 +0000 Subject: 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 --- build/build-modules-c.cmake | 83 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 build/build-modules-c.cmake (limited to 'build') 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 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() -- cgit v1.2.3