@@ -27,9 +27,10 @@ PROGRESS_COUNT=0
27
27
28
28
# Command Line Arguments
29
29
30
- if [ " $# " != 1 ]; then
31
- echo " Usage: $0 <stage>"
30
+ if [ " $# " -lt 1 ]; then
31
+ echo " Usage: $0 <stage> [<link_mode>] "
32
32
echo " stage: 0 (host compiler), 1 (stage1), or 2 (stage2)"
33
+ echo " link_mode: static (use static linking), dynamic (use dynamic linking)"
33
34
echo " "
34
35
echo " Environment Variables:"
35
36
echo " VERBOSE=1 Enable verbose output"
@@ -54,6 +55,12 @@ case "$1" in
54
55
exit 1 ;;
55
56
esac
56
57
58
+ if [ $# -ge 2 ] && [ " $2 " = " dynamic" ]; then
59
+ readonly SHECC_CFLAGS=" --dynlink"
60
+ else
61
+ readonly SHECC_CFLAGS=" "
62
+ fi
63
+
57
64
# Utility Functions
58
65
59
66
# Color output functions
@@ -147,7 +154,7 @@ function report_test_failure() {
147
154
cat -n " $tmp_in "
148
155
echo " =================================================="
149
156
echo " "
150
- echo " Compiler command: $SHECC -o $tmp_exe $tmp_in "
157
+ echo " Compiler command: $SHECC $SHECC_CFLAGS -o $tmp_exe $tmp_in "
151
158
echo " Test files: input=$tmp_in , executable=$tmp_exe "
152
159
exit 1
153
160
}
@@ -169,7 +176,7 @@ function try() {
169
176
local tmp_exe=" $( mktemp) "
170
177
echo " $input " > " $tmp_in "
171
178
# Suppress compiler warnings by redirecting stderr
172
- $SHECC -o " $tmp_exe " " $tmp_in " 2> /dev/null
179
+ $SHECC $SHECC_CFLAGS -o " $tmp_exe " " $tmp_in " 2> /dev/null
173
180
chmod +x $tmp_exe
174
181
175
182
local output=' '
@@ -227,7 +234,7 @@ function try_compile_error() {
227
234
# Run in a subshell with job control disabled
228
235
(
229
236
set +m 2> /dev/null # Disable job control messages
230
- $SHECC -o " $tmp_exe " " $tmp_in " 2>&1
237
+ $SHECC $SHECC_CFLAGS -o " $tmp_exe " " $tmp_in " 2>&1
231
238
) > /dev/null 2>&1
232
239
local exit_code=$?
233
240
@@ -308,7 +315,7 @@ int main() {
308
315
EOF
309
316
310
317
# Suppress compiler warnings by redirecting stderr
311
- $SHECC -o " $tmp_exe " " $tmp_in " 2> /dev/null
318
+ $SHECC $SHECC_CFLAGS -o " $tmp_exe " " $tmp_in " 2> /dev/null
312
319
chmod +x $tmp_exe
313
320
314
321
local output=$( ${TARGET_EXEC:- } " $tmp_exe " )
338
345
echo " $input "
339
346
echo " --------------------------------------------------"
340
347
echo " "
341
- echo " Compiler command: $SHECC -o $tmp_exe $tmp_in "
348
+ echo " Compiler command: $SHECC $SHECC_CFLAGS -o $tmp_exe $tmp_in "
342
349
echo " Test files: input=$tmp_in , executable=$tmp_exe "
343
350
exit 1
344
351
else
0 commit comments