1# Licensed to the Apache Software Foundation (ASF) under one or more
2# contributor license agreements.  See the NOTICE file distributed with
3# this work for additional information regarding copyright ownership.
4# The ASF licenses this file to You under the Apache License, Version 2.0
5# (the "License"); you may not use this file except in compliance with
6# the License.  You may obtain a copy of the License at
7#
8#     http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15BEGIN {
16    RS = " "
17    # the core module must come first
18    modules[n++] = "core"
19    pmodules[pn++] = "core"
20}
21{
22    modules[n] = $1;
23    pmodules[pn] = $1;
24    gsub("\n","",modules[n]);
25    gsub("\n","",pmodules[pn]);
26    ++n;
27    ++pn;
28}
29END {
30    print "/*"
31    print " * modules.c --- automatically generated by Apache"
32    print " * configuration script.  DO NOT HAND EDIT!!!!!"
33    print " */"
34    print ""
35    print "#include \"ap_config.h\""
36    print "#include \"httpd.h\""
37    print "#include \"http_config.h\""
38    print ""
39    for (i = 0; i < pn; ++i) {
40        printf ("extern module %s_module;\n", pmodules[i])
41    }
42    print ""
43    print "/*"
44    print " *  Modules which implicitly form the"
45    print " *  list of activated modules on startup,"
46    print " *  i.e. these are the modules which are"
47    print " *  initially linked into the Apache processing"
48    print " *  [extendable under run-time via AddModule]"
49    print " */"
50    print "module *ap_prelinked_modules[] = {"
51    for (i = 0 ; i < n; ++i) {
52        printf "  &%s_module,\n", modules[i]
53    }
54    print "  NULL"
55    print "};"
56    print ""
57    print "/*"
58    print " *  We need the symbols as strings for <IfModule> containers"
59    print " */"
60    print ""
61    print "ap_module_symbol_t ap_prelinked_module_symbols[] = {"
62    for (i = 0; i < n; ++i) {
63        printf ("  {\"%s_module\", &%s_module},\n", modules[i], modules[i])
64    }
65    print "  {NULL, NULL}"
66    print "};"
67    print ""
68    print "/*"
69    print " *  Modules which initially form the"
70    print " *  list of available modules on startup,"
71    print " *  i.e. these are the modules which are"
72    print " *  initially loaded into the Apache process"
73    print " *  [extendable under run-time via LoadModule]"
74    print " */"
75    print "module *ap_preloaded_modules[] = {"
76    for (i = 0; i < pn; ++i) {
77        printf "  &%s_module,\n", pmodules[i]
78    }
79    print "  NULL"
80    print "};"
81    print ""
82}
83