commit f048161
shrub
·
2026-06-29 16:20:46 +0000 UTC
parent 571dd0f
fix box
1 files changed,
+69,
-2
+69,
-2
1@@ -47,7 +47,7 @@ mkdir -p "${BDIR}"
2 OBJS=""
3 DECL_F="${BDIR}/decls.inc"
4 : > "${DECL_F}"
5-for _c in posix linux net pseudo xsi; do
6+for _c in posix linux net pseudo xsi extra; do
7 : > "${BDIR}/entries_${_c}.inc"
8 done
9 unset _c
10@@ -114,6 +114,70 @@ compile_make() {
11 printf '\t{ "make", make_main, "posix" },\n' >> "${BDIR}/entries_posix.inc"
12 }
13
14+compile_diff() {
15+ ddir="${ROOT}/cmd/posix/diff"
16+ symf="${BDIR}/diff.syms"
17+ diff_objs=""
18+
19+ printf 'mkbox: cc diff (multi)\n'
20+ for s in diff diffdir diffreg pr xmalloc; do
21+ out="${BDIR}/diff_${s}.o"
22+ eval "${CC} ${CPPFLAGS} -I\"\$ddir\" ${CFLAGS} -c \"\$ddir/\$s.c\" -o \"\$out\"" ||
23+ die "compile failed: diff/${s}.c"
24+ diff_objs="${diff_objs} ${out}"
25+ done
26+
27+ combined="${BDIR}/diff_combined.o"
28+ ${LD:-ld} -r -o "${combined}" ${diff_objs} ||
29+ die "ld -r failed: diff"
30+
31+ printf 'main diff_main\n' > "${symf}"
32+ ${OBJCOPY} --redefine-syms="${symf}" "${combined}" ||
33+ die "objcopy failed: diff"
34+ ${OBJCOPY} --keep-global-symbol=diff_main "${combined}" ||
35+ die "objcopy localize failed: diff"
36+ rm -f "${symf}" ${diff_objs}
37+
38+ OBJS="${OBJS} ${combined}"
39+ LDLIBS="${LDLIBS} -lm"
40+ printf 'int diff_main(int, char **);\n' >> "${DECL_F}"
41+ printf '\t{ "diff", diff_main, "posix" },\n' >> "${BDIR}/entries_posix.inc"
42+}
43+
44+compile_diff3() {
45+ ddir="${ROOT}/cmd/extra/diff3"
46+ pdir="${ROOT}/cmd/posix/diff"
47+ symf="${BDIR}/diff3.syms"
48+ diff3_objs=""
49+
50+ printf 'mkbox: cc diff3 (multi)\n'
51+ for s in diff3; do
52+ out="${BDIR}/diff3_${s}.o"
53+ eval "${CC} ${CPPFLAGS} -I\"\$pdir\" ${CFLAGS} -c \"\$ddir/\$s.c\" -o \"\$out\"" ||
54+ die "compile failed: diff3/${s}.c"
55+ diff3_objs="${diff3_objs} ${out}"
56+ done
57+ out="${BDIR}/diff3_xmalloc.o"
58+ eval "${CC} ${CPPFLAGS} -I\"\$pdir\" ${CFLAGS} -c \"\$pdir/xmalloc.c\" -o \"\$out\"" ||
59+ die "compile failed: diff/xmalloc.c"
60+ diff3_objs="${diff3_objs} ${out}"
61+
62+ combined="${BDIR}/diff3_combined.o"
63+ ${LD:-ld} -r -o "${combined}" ${diff3_objs} ||
64+ die "ld -r failed: diff3"
65+
66+ printf 'main diff3_main\n' > "${symf}"
67+ ${OBJCOPY} --redefine-syms="${symf}" "${combined}" ||
68+ die "objcopy failed: diff3"
69+ ${OBJCOPY} --keep-global-symbol=diff3_main "${combined}" ||
70+ die "objcopy localize failed: diff3"
71+ rm -f "${symf}" ${diff3_objs}
72+
73+ OBJS="${OBJS} ${combined}"
74+ printf 'int diff3_main(int, char **);\n' >> "${DECL_F}"
75+ printf '\t{ "diff3", diff3_main, "extra" },\n' >> "${BDIR}/entries_extra.inc"
76+}
77+
78 compile_awk() {
79 adir="${ROOT}/cmd/posix/awk"
80 symf="${BDIR}/awk.syms"
81@@ -236,6 +300,7 @@ process_dir() {
82 }
83
84 process_dir "${ROOT}/cmd/posix" "posix"
85+compile_diff
86 compile_awk
87 compile_sh
88 compile_make
89@@ -243,6 +308,8 @@ process_dir "${ROOT}/cmd/linux" "linux"
90 process_dir "${ROOT}/cmd/net" "net"
91 process_dir "${ROOT}/cmd/pseudo" "pseudo"
92 process_dir "${ROOT}/cmd/xsi" "xsi"
93+process_dir "${ROOT}/cmd/extra" "extra"
94+compile_diff3
95
96 DISP="${BDIR}/aruu-box.c"
97 printf 'mkbox: generating dispatch\n'
98@@ -280,7 +347,7 @@ DISPATCH_STRUCT
99 # sort each category alphabetically by tool name at build time;
100 # entries have the form: \t{ "name", fn_main, "cat" },
101 # splitting on " makes field 2 the tool name
102-for _c in posix linux net pseudo xsi; do
103+for _c in posix linux net pseudo xsi extra; do
104 sort -t'"' -k2,2 "${BDIR}/entries_${_c}.inc"
105 done >> "${DISP}"
106 unset _c