RN rnmake  3.0.0
hdrdeps.sh
1 #!/bin/sh
2 # Package: RN Makefile System Utility
3 # File: hdrdeps.sh
4 # Desc: Build package header dependency list
5 # Usage: hdrdeps.sh -c <depcmd> -f <depfile> [-o <objdir>] \
6 # [-I<incdir> -I<incdir> ...] sources
7 # Example:
8 # hdrdeps.sh -c "gcc -M" -f .deps/deps.<arch> -o obj/obj-<arch> \
9 # -d "-DFOO -UBAR" -I. -I../include foo.c bar.cxx
10 #
11 # /*! \file */
12 # /*! \cond RNMAKE_DOXY*/
13 
14 # The options string
15 optstr="c:f:o:d:I:"
16 
17 depcmd=
18 depfile=
19 objdir=
20 cppflags=
21 includes=
22 
23 #
24 # Get options. Note: first colon says that getopts will not print errors.
25 #
26 while getopts :${optstr} opt
27 do
28  case $opt in
29  c) depcmd="$OPTARG" ;;
30 
31  f) depfile="$OPTARG" ;;
32 
33  o) objdir="$OPTARG"/ ;;
34 
35  d) cppflags="$OPTARG" ;;
36 
37  I) includes="${includes} -I$OPTARG"
38  ;;
39  *) echo "rnmake: $0: error: Unknown opt: $opt"; exit 2;;
40  esac
41 done
42 
43 shift $(($OPTIND - 1))
44 
45 if [ "$depcmd" = "" ]
46 then
47  echo "rnmake: $0: error: No dependency command specfied"
48  exit 2
49 fi
50 
51 if [ "$depfile" = "" ]
52 then
53  echo "rnmake: $0: error: No output dependency file specfied"
54  exit 2
55 fi
56 
57 # Header
58 echo '# Dependencies' > ${depfile}
59 echo '#' $(date) >> ${depfile}
60 echo ' ' >> ${depfile}
61 
62 # Dependencies
63 if [ "$*" != "" ]
64 then
65  #echo ${depcmd} ${cppflags} $includes $*
66 
67  # Make dependencies
68  ${depcmd} ${cppflags} $includes $* >> ${depfile}
69 
70  # Preface object dependency lines with object directory
71  sed -i -e "s%^.*\.o:%${objdir}&%" ${depfile}
72 fi
73 
74 exit 0
75 
76 #/*! \endcond RNMAKE_DOXY */