diff --git a/bash/smake/smake.sh b/bash/smake/smake.sh index fa15b7d..6c752c7 100755 --- a/bash/smake/smake.sh +++ b/bash/smake/smake.sh @@ -136,7 +136,51 @@ echo -e '\t$(CC) $(LDFLAGS) -o $@ $(target_objs)' >> Makefile echo >> Makefile # --- Object files deplist --- +for cf in `echo "$target_dep_lst" | grep -P '.c$'`; do + CF="" + for d in . $REP_INCLUDE; do + if [ -f "$d/$cf" ]; then + CF="$d/$cf" + break + fi + done + if [ "$CF" == "" ]; then + files_not_dound="$files_not_found\n$cf" + continue + fi + to=`basename "$cf" | sed 's~.c$~.o~'` + + target_dep_lst="$CF "`remove_c_comments.pl $CF | grep -P '^[\t ]*#include[\t ]*"' | sed 's~[^"]*"\([^"]*\)".*~\1~' | sort -u` + files_not_found= + while [[ "$target_dep_lst" != "$old_target_dep_lst" ]]; do + old_target_dep_lst=$target_dep_lst + for f in $target_dep_lst; do + F="" + for d in . $REP_INCLUDE; do + if [ -f "$d/$f" ]; then + F="$d/$f" + break + fi + done + if [ "$F" == "" ]; then + files_not_found="$files_not_found\n$f" + continue + fi + target_dep_lst="$target_dep_lst "`remove_c_comments.pl $F \ + | grep -P '^[\t ]*#include[\t ]*"' \ + | sed 's~[^"]*"\([^"]*\)".*~\1~' | sort -u` + target_dep_lst=`echo $target_dep_lst | sed 's~ ~\n~g' | sort -u` + done + done + + echo "$to: " >> Makefile + for td in $target_dep_lst; do + td=`echo "$td" | sed 's~^\./~~ ; s~a~a~'` + echo -e "\t$td \\" >> Makefile + done + echo >> Makefile +done