Sun, 23 Nov 2025 13:15:19 +0100
optimize sorted insertion by using the infimum instead of the supremum
The reason is that the supremum returns the equal element with the smallest index, and we want the largest.
Therefore, we use the infimum, which already gives us the largest index when there are equal elements, and increase the index by one. The infimum is also guaranteed to exist in that case.
#!/bin/sh dir="$1" target="$2" extra_flags="$3" if [ -z "$dir" ]; then echo "Usage: $0 <src_dir>" exit 1 fi if [ -z "$target" ]; then target='$(build_dir)' fi if [ -d "$dir" ]; then : else echo "'$dir' is not a directory" exit 1 fi if [ -z "$CC" ]; then for cc in gcc clang ; do if command -v "$cc" > /dev/null ; then CC="$cc" break fi done fi if [ -z "$CC" ]; then echo "No suitable compiler found to generate make rules" exit 1 fi if command -v sed > /dev/null ; then : else echo "You need the 'sed' program for this script to work." exit 1 fi cd "$dir" mv Makefile Makefile.old sed '/FORCE:/q' Makefile.old > Makefile echo >> Makefile for file in `ls *.c` ; do "$CC" -MT "$target/${file/.c/\$(OBJ_EXT)}" -MM $CFLAGS $extra_flags "$file" printf '\t@echo "Compiling $<"\n' printf '\t$(CC) -o $@ $(CFLAGS) %s -c $<\n\n' "$extra_flags" done >> Makefile rm Makefile.old