make/update-rules.sh

Tue, 25 Feb 2025 17:56:54 +0100

author
Mike Becker <universe@uap-core.de>
date
Tue, 25 Feb 2025 17:56:54 +0100
changeset 42
e0f3d41ae44b
parent 0
b4b281ef2d0f
permissions
-rwxr-xr-x

add DOCTYPE html

relates to #606

0
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1 #!/bin/sh
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
2
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3 dir="$1"
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
4 target="$2"
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
5 extra_flags="$3"
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
6
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
7 if [ -z "$dir" ]; then
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
8 echo "Usage: $0 <src_dir>"
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
9 exit 1
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
10 fi
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
11
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
12 if [ -z "$target" ]; then
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
13 target='../build'
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
14 fi
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
15
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
16 if [ -d "$dir" ]; then
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
17 :
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
18 else
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
19 echo "'$dir' is not a directory"
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
20 exit 1
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
21 fi
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
22
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
23 if [ -z "$CXX" ]; then
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
24 for cxx in g++ clang++ ; do
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
25 if command -v "$cxx" > /dev/null ; then
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
26 CXX="$cxx"
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
27 break
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
28 fi
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
29 done
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
30 fi
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
31
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
32 if [ -z "$CXX" ]; then
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
33 echo "No suitable compiler found to generate make rules"
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
34 exit 1
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
35 fi
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
36
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
37 if command -v sed > /dev/null ; then
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
38 :
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
39 else
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
40 echo "You need the 'sed' program for this script to work."
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
41 exit 1
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
42 fi
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
43
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
44 cd "$dir"
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
45
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
46 mv Makefile Makefile.old
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
47 sed '/FORCE:/q' Makefile.old > Makefile
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
48 echo >> Makefile
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
49 for file in `ls *.cpp` ; do
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
50 "$CXX" -MT "$target/${file/.cpp/\.o}" -MM $CXXFLAGS $extra_flags "$file"
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
51 printf '\t@echo "Compiling $<"\n'
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
52 printf '\t$(CXX) -o $@ $(CXXFLAGS) %s -c $<\n\n' "$extra_flags"
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
53 done >> Makefile
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
54 rm Makefile.old
b4b281ef2d0f project init
Mike Becker <universe@uap-core.de>
parents:
diff changeset
55

mercurial