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