make/update-rules.sh

Tue, 09 Jun 2026 18:50:13 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Tue, 09 Jun 2026 18:50:13 +0200
changeset 1187
7b5ee7367b32
parent 1158
96c202d45fbb
permissions
-rwxr-xr-x

fix AppDelegate source file case (Cocoa)

1158
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1 #!/bin/sh
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
2
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3 # the directory where the executed Makefile is
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
4 dir="$1"
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
5
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
6 # extra flags to add to the compile recipe (if you want to use extra
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
7 # flags for the dependency resolution, set CFLAGS environment variable)
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
8 extra_flags="$2"
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
9
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
10 # additional source prefix in case the recipes are for a included Makefile
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
11 src_prefix="$3"
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
12
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
13 # the target directory for the object files (default: ../build/$dir/)
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
14 target="$4"
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
15
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
16 # the object file extension to use (default: $(OBJ_EXT) from the config.mk)
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
17 obj_ext="$5"
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
18
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
19
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
20 if [ -z "$dir" ]; then
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
21 echo "Usage: $0 <src_dir>"
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
22 exit 1
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
23 fi
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
24
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
25 if [ -z "$target" ]; then
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
26 target="../build/$dir/"
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
27 fi
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
28
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
29 if [ -z "$obj_ext" ]; then
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
30 obj_ext='$(OBJ_EXT)'
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
31 fi
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
32
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
33 if [ -d "$dir" ]; then
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
34 :
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
35 else
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
36 echo "'$dir' is not a directory"
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
37 exit 1
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
38 fi
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
39
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
40 if [ -z "$CC" ]; then
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
41 for cc in gcc clang ; do
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
42 if command -v "$cc" > /dev/null ; then
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
43 CC="$cc"
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
44 break
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
45 fi
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
46 done
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
47 fi
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
48
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
49 if [ -z "$CC" ]; then
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
50 echo "No suitable compiler found to generate make rules"
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
51 exit 1
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
52 fi
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
53
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
54 if command -v sed > /dev/null ; then
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
55 :
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
56 else
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
57 echo "You need the 'sed' program for this script to work."
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
58 exit 1
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
59 fi
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
60
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
61 # cleanup include paths to only depend on non-system headers
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
62 cflags=`echo $CFLAGS | sed 's/-I\//-isystem \//g'`
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
63
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
64 # switch into the directory of the executed Makefile and generate the recipes
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
65 cd "$dir"
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
66
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
67 mv ${src_prefix}Makefile ${src_prefix}Makefile.old
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
68 sed '/FORCE:/q' ${src_prefix}Makefile.old > ${src_prefix}Makefile
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
69 echo >> ${src_prefix}Makefile
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
70 for file in `ls ${src_prefix}*.c` ; do
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
71 "$CC" -MT "$target$(basename $file .c)$obj_ext" -MM $cflags "$file"
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
72 printf '\t$(CC) -o $@ $(CFLAGS) %s -c $<\n\n' "$extra_flags"
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
73 done >> ${src_prefix}Makefile
96c202d45fbb add build dependencies and a script for generating them
Mike Becker <universe@uap-core.de>
parents:
diff changeset
74 rm ${src_prefix}Makefile.old

mercurial