make/update-rules.sh

changeset 0
b4b281ef2d0f
equal deleted inserted replaced
-1:000000000000 0:b4b281ef2d0f
1 #!/bin/sh
2
3 dir="$1"
4 target="$2"
5 extra_flags="$3"
6
7 if [ -z "$dir" ]; then
8 echo "Usage: $0 <src_dir>"
9 exit 1
10 fi
11
12 if [ -z "$target" ]; then
13 target='../build'
14 fi
15
16 if [ -d "$dir" ]; then
17 :
18 else
19 echo "'$dir' is not a directory"
20 exit 1
21 fi
22
23 if [ -z "$CXX" ]; then
24 for cxx in g++ clang++ ; do
25 if command -v "$cxx" > /dev/null ; then
26 CXX="$cxx"
27 break
28 fi
29 done
30 fi
31
32 if [ -z "$CXX" ]; 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 *.cpp` ; do
50 "$CXX" -MT "$target/${file/.cpp/\.o}" -MM $CXXFLAGS $extra_flags "$file"
51 printf '\t@echo "Compiling $<"\n'
52 printf '\t$(CXX) -o $@ $(CXXFLAGS) %s -c $<\n\n' "$extra_flags"
53 done >> Makefile
54 rm Makefile.old
55

mercurial