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.
| 755 | 1 | #!/bin/sh |
| 2 | ||
| 3 | dir="$1" | |
|
766
e59b76889f00
bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
755
diff
changeset
|
4 | target="$2" |
|
988
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
766
diff
changeset
|
5 | extra_flags="$3" |
| 755 | 6 | |
| 7 | if [ -z "$dir" ]; then | |
| 8 | echo "Usage: $0 <src_dir>" | |
| 9 | exit 1 | |
| 10 | fi | |
| 11 | ||
|
766
e59b76889f00
bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
755
diff
changeset
|
12 | if [ -z "$target" ]; then |
|
e59b76889f00
bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
755
diff
changeset
|
13 | target='$(build_dir)' |
|
e59b76889f00
bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
755
diff
changeset
|
14 | fi |
|
e59b76889f00
bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
755
diff
changeset
|
15 | |
| 755 | 16 | if [ -d "$dir" ]; then |
| 17 | : | |
| 18 | else | |
| 19 | echo "'$dir' is not a directory" | |
| 20 | exit 1 | |
| 21 | fi | |
| 22 | ||
| 23 | if [ -z "$CC" ]; then | |
| 24 | for cc in gcc clang ; do | |
| 25 | if command -v "$cc" > /dev/null ; then | |
| 26 | CC="$cc" | |
| 27 | break | |
| 28 | fi | |
| 29 | done | |
| 30 | fi | |
| 31 | ||
| 32 | if [ -z "$CC" ]; then | |
| 33 | echo "No suitable compiler found to generate make rules" | |
| 34 | exit 1 | |
| 35 | fi | |
| 36 | ||
| 37 | if command -v sed > /dev/null ; then | |
| 38 | : | |
| 39 | else | |
| 40 | echo "You need the 'sed' program for this script to work." | |
| 41 | exit 1 | |
| 42 | fi | |
| 43 | ||
| 44 | cd "$dir" | |
| 45 | ||
| 46 | mv Makefile Makefile.old | |
| 47 | sed '/FORCE:/q' Makefile.old > Makefile | |
| 48 | echo >> Makefile | |
| 49 | for file in `ls *.c` ; do | |
|
988
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
766
diff
changeset
|
50 | "$CC" -MT "$target/${file/.c/\$(OBJ_EXT)}" -MM $CFLAGS $extra_flags "$file" |
| 755 | 51 | printf '\t@echo "Compiling $<"\n' |
|
988
15b3ca7ee33f
make ucx C++ compatible again (and add tests for it) - fixes #486
Mike Becker <universe@uap-core.de>
parents:
766
diff
changeset
|
52 | printf '\t$(CC) -o $@ $(CFLAGS) %s -c $<\n\n' "$extra_flags" |
| 755 | 53 | done >> Makefile |
| 54 | rm Makefile.old |