выводятся цели-объекты без зависимостей, пора домой...
This commit is contained in:
parent
02cfb8f0ba
commit
f0bf0b48f1
|
@ -150,146 +150,22 @@ for i in `seq 0 $((nfiles-1))`; do
|
|||
carry=true
|
||||
done
|
||||
echo >> Makefile
|
||||
|
||||
|
||||
|
||||
# ======= Warning =======
|
||||
files_not_found=`echo -e "$files_not_found" | sort -u`
|
||||
if [ "$files_not_found" != "" ]; then
|
||||
echo WARNING: Include files not found: $files_not_found
|
||||
fi
|
||||
|
||||
#####################################################################################
|
||||
#####################################################################################
|
||||
#####################################################################################
|
||||
#####################################################################################
|
||||
#####################################################################################
|
||||
exit 0
|
||||
cat $RULES_FILE >> Makefile
|
||||
|
||||
REP_INCLUDE=`echo $REP_INCLUDE | sed "s~-I~~g ; s~\\$(HOME)~${HOME}~"`
|
||||
|
||||
# --- Target deplist ---
|
||||
target_dep_lst=`remove_c_comments.pl $REP_TARGET.c | 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"
|
||||
C=`echo $f | sed 's~\.h$~\.c~'`
|
||||
if [ -f "$d/$C" ]; then
|
||||
target_dep_lst="$target_dep_lst $C"
|
||||
fi
|
||||
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
|
||||
|
||||
if [ $DEBUG == 1 ]; then
|
||||
echo -e "target_dep_lst:\n`echo $target_dep_lst | sed -e 's~ ~\n~g' | sed 's~\(^..\)~ \1~g'`"
|
||||
fi
|
||||
|
||||
# --- Target's objects ---
|
||||
target_obj_lst=`echo "$target_dep_lst" | grep -P '.c$' | sed -e 's~.c$~.o~'`
|
||||
if [ $DEBUG == 1 ]; then
|
||||
echo -e "target_obj_lst:\n`echo $target_obj_lst | sed -e 's~ ~\n~g' | sed 's~\(^..\)~ \1~g'`"
|
||||
fi
|
||||
|
||||
# --- Target's target ;) ---
|
||||
echo "target_objs = \\" >> Makefile
|
||||
for to in $target_obj_lst; do
|
||||
echo -e "\t$to \\" >> Makefile
|
||||
done
|
||||
echo >> Makefile
|
||||
|
||||
echo '$(TARGET): $(target_objs)' >> Makefile
|
||||
echo -e '\t$(CC) $(LDFLAGS) -o $@ $(target_objs)' >> Makefile
|
||||
# ======= Object's rules =======
|
||||
for i in `seq 0 $((nfiles-1))`; do
|
||||
extension=`basename ${flist[$i]} | sed 's~.*\.~~g'`
|
||||
f=`echo ${flist[$i]} | sed "s~.$extension$~~"`
|
||||
[[ "$extension" != c && "$extension" != cpp
|
||||
&& "$extension" != cxx && "$extension" != cc ]] && continue
|
||||
echo "`basename $f.o:` \\" >> 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_found="$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`
|
||||
old_target_dep_lst=
|
||||
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
|
||||
|
||||
target_dep_lst=
|
||||
for f in $old_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=`echo "$F $target_dep_lst" | sed 's~ ~\n~g' | sort -u`
|
||||
done
|
||||
|
||||
echo "$to: \\" >> Makefile
|
||||
for td in $target_dep_lst; do
|
||||
td=`echo "$td" | sed "s~^\./~~ ; s~^\./~~ ; s~${HOME}~$\(HOME\)~"`
|
||||
echo -e "\t$td \\" >> Makefile
|
||||
done
|
||||
echo >> Makefile
|
||||
done
|
||||
|
||||
|
||||
|
||||
# ======= Warning =======
|
||||
files_not_found=`echo -e "$files_not_found" | sort -u`
|
||||
if [ "$files_not_found" != "" ]; then
|
||||
echo WARNING: Include files not found: $files_not_found
|
||||
fi
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue