upload http
[bottlenecks.git] / rubbos / app / httpd-2.0.64 / srclib / apr / build / make_exports.awk
1
2 BEGIN {
3     printf("/*\n")
4     printf(" * THIS FILE WAS AUTOGENERATED BY make_exports.awk\n")
5     printf(" *\n")
6     printf(" * This is an ugly hack that needs to be here, so\n")
7     printf(" * that libtool will link all of the APR functions\n")
8     printf(" * into server regardless of whether the base server\n")
9     printf(" * uses them.\n")
10     printf(" */\n")
11     printf("\n")
12     printf("#define CORE_PRIVATE\n")
13     printf("\n")
14     
15     for (i = 1; i < ARGC; i++) {
16         file = ARGV[i]
17         sub("([^/]*[/])*", "", file)
18         printf("#include \"%s\"\n", file)
19     }
20
21     printf("\n")
22     printf("const void *ap_ugly_hack = NULL;\n")
23     printf("\n")
24     
25     TYPE_NORMAL = 0
26     TYPE_HEADER = 1
27
28     stackptr = 0
29 }
30
31 function push(line) {
32     stack[stackptr] = line
33     stackptr++
34 }
35
36 function do_output() {
37     printf("/*\n")
38     printf(" * %s\n", FILENAME)
39     printf(" */\n")
40     
41     for (i = 0; i < stackptr; i++) {
42         printf("%s\n", stack[i])
43     }
44     
45     stackptr = 0
46
47     printf("\n");
48 }
49
50 function enter_scope(type) {
51     scope++
52     scope_type[scope] = type
53     scope_stack[scope] = stackptr
54     delete scope_used[scope]
55 }
56
57 function leave_scope() {
58     used = scope_used[scope]
59    
60     if (!used)
61         stackptr = scope_stack[scope]
62
63     scope--
64     if (used) {
65         scope_used[scope] = 1
66         
67         if (!scope)
68             do_output()
69     }
70 }
71
72 function add_symbol(symbol) {
73     if (!index(symbol, "#")) {
74         push("const void *ap_hack_" symbol " = (const void *)" symbol ";")
75         scope_used[scope] = 1
76     }
77 }
78
79 /^[ \t]*AP[RUI]?_(CORE_)?DECLARE[^(]*[(][^)]*[)]([^ ]* )*[^(]+[(]/ {
80     sub("[ \t]*AP[RUI]?_(CORE_)?DECLARE[^(]*[(][^)]*[)][ \t]*", "")
81     sub("[(].*", "")
82     sub("([^ ]* (^([ \t]*[(])))+", "")
83
84     add_symbol($0)
85     next
86 }
87
88 /^[ \t]*AP_DECLARE_HOOK[^(]*[(][^)]*/ {
89     split($0, args, ",")
90     symbol = args[2]
91     sub("^[ \t]+", "", symbol)
92     sub("[ \t]+$", "", symbol)
93
94     add_symbol("ap_hook_" symbol)
95     add_symbol("ap_hook_get_" symbol)
96     add_symbol("ap_run_" symbol)
97     next
98 }
99
100 /^[ \t]*APR_POOL_DECLARE_ACCESSOR[^(]*[(][^)]*[)]/ {
101     sub("[ \t]*APR_POOL_DECLARE_ACCESSOR[^(]*[(]", "", $0)
102     sub("[)].*$", "", $0)
103     add_symbol("apr_" $0 "_pool_get")
104     next
105 }
106
107 /^[ \t]*APR_DECLARE_INHERIT_SET[^(]*[(][^)]*[)]/ {
108     sub("[ \t]*APR_DECLARE_INHERIT_SET[^(]*[(]", "", $0)
109     sub("[)].*$", "", $0)
110     add_symbol("apr_" $0 "_inherit_set")
111     next
112 }
113
114 /^[ \t]*APR_DECLARE_INHERIT_UNSET[^(]*[(][^)]*[)]/ {
115     sub("[ \t]*APR_DECLARE_INHERIT_UNSET[^(]*[(]", "", $0)
116     sub("[)].*$", "", $0)
117     add_symbol("apr_" $0 "_inherit_unset")
118     next
119 }
120
121 /^#[ \t]*if(ndef| !defined[(])([^_]*_)*H/ {
122     enter_scope(TYPE_HEADER)
123     next
124 }
125
126 /^#[ \t]*if([n]?def)? / {
127     enter_scope(TYPE_NORMAL)
128     push($0)
129     next
130 }
131
132 /^#[ \t]*endif/ {
133     if (scope_type[scope] == TYPE_NORMAL)
134         push($0)
135         
136     leave_scope()
137     next
138 }
139
140 /^#[ \t]*else/ {
141     push($0)
142     next
143 }
144
145 /^#[ \t]*elif/ {
146     push($0)
147     next
148 }
149
150