28
28
29
29
#include "lwan-private.h"
30
30
31
- static int constructor_attr_supported = 0 ;
32
-
33
- LWAN_CONSTRUCTOR ()
34
- static void initialize_constructor_attr_supported (void )
35
- {
36
- constructor_attr_supported = 1 ;
37
- }
38
-
39
31
static int bin2hex_mmap (const char * path , const char * identifier )
40
32
{
41
33
int fd = open (path , O_RDONLY | O_CLOEXEC );
@@ -104,15 +96,12 @@ static int bin2hex(const char *path, const char *identifier)
104
96
105
97
printf ("\n/* Contents of %s available through %s_value */\n" , path , identifier );
106
98
107
- if (constructor_attr_supported ) {
108
- printf ("#if defined(__GNUC__) || defined(__clang__)\n" );
109
- r |= bin2hex_incbin (path , identifier );
110
- printf ("#else\n" );
111
- r |= bin2hex_mmap (path , identifier );
112
- printf ("#endif\n\n" );
113
- } else {
114
- r |= bin2hex_mmap (path , identifier );
115
- }
99
+ printf ("#if defined(__GNUC__) || defined(__clang__)\n" );
100
+ r |= bin2hex_incbin (path , identifier );
101
+ printf ("#else\n" );
102
+ r |= bin2hex_mmap (path , identifier );
103
+ printf ("#endif\n\n" );
104
+
116
105
return r ;
117
106
}
118
107
@@ -133,7 +122,7 @@ int main(int argc, char *argv[])
133
122
134
123
printf ("/* Auto generated by %s, do not edit. */\n" , argv [0 ]);
135
124
printf ("#pragma once\n\n" );
136
- printf ("#include \"lwan.h\"\n" );
125
+ printf ("#include \"lwan-private .h\"\n" );
137
126
138
127
for (arg = 1 ; arg < argc ; arg += 2 ) {
139
128
const char * path = argv [arg ];
@@ -146,21 +135,18 @@ int main(int argc, char *argv[])
146
135
}
147
136
}
148
137
149
- if (constructor_attr_supported ) {
150
- printf ("#if defined(__GNUC__) || defined(__clang__)\n" );
151
- printf ("__attribute__((constructor (101))) static void\n" );
152
- printf ("initialize_bin2hex_%016lx(void)\n" , (uintptr_t )argv );
153
- printf ("{\n" );
154
- for (arg = 1 ; arg < argc ; arg += 2 ) {
155
- const char * identifier = argv [arg + 1 ];
156
-
157
- printf (" %s_value = (struct lwan_value) {.value = (char *)%s_start, "
158
- ".len = (size_t)(%s_end - %s_start)};\n" ,
159
- identifier , identifier , identifier , identifier );
160
- }
161
- printf ("}\n" );
162
- printf ("#endif\n" );
138
+ printf ("#if defined(__GNUC__) || defined(__clang__)\n" );
139
+ printf ("LWAN_CONSTRUCTOR(bin2hex_%016lx, 0)\n" , (uintptr_t )argv );
140
+ printf ("{\n" );
141
+ for (arg = 1 ; arg < argc ; arg += 2 ) {
142
+ const char * identifier = argv [arg + 1 ];
143
+
144
+ printf (" %s_value = (struct lwan_value) {.value = (char *)%s_start, "
145
+ ".len = (size_t)(%s_end - %s_start)};\n" ,
146
+ identifier , identifier , identifier , identifier );
163
147
}
148
+ printf ("}\n" );
149
+ printf ("#endif\n" );
164
150
165
151
return 0 ;
166
152
}
0 commit comments