Kodama's home / tips.
コンパイラを起動して そのメッセ−ジを参照しているだけの 超手抜きだけど大体は大丈夫.
*.mod と *.def に関する ル−ルで十分だが, Modula2 と link する C のソ−スが含まれる場合もあるので, *.c のル−ルも出す事にした.
make も gcc の -MM オプションも知らないで, 毎回 cc ... とか打ってコンパイルしている人もいる. っていうかそういう風に教えられてるのかな? なんだかねぇ〜
#! /bin/bash # m2depend # For M2F Modula2, # this script output a rule suitable for make # describing the dependencies of .def, .mod and .c sources # # K.Kodama 1999.12.5 if [ "$1" = "-h" ];then cat <<'EOF' For m2f Modula2, this script output a rule suitable for make describing the dependencies of .def, .mod and .c sources -h , This text. -m , output default rule for m2f Modula2 none, output rule for make EOF exit elif [ "$1" = "-m" ];then cat <<'EOF' # Makefile for m2f Modula-2 M2PATH=-M "/usr/m2/libs ." M2OPTION=$(M2PATH) -bounds -return -v -verbose -O MLOPTION=$(M2OPTION) -m -l # -g M2C=m2f $(M2OPTION) M2L=m2f $(MLOPTION) %.o : %.mod $(M2C) $< %.o : %.c cc -O2 -c $< -o $@ % : %.o $(M2L) -o $@ $< # all: clean: rm *.o #install: depend: m2depend -m EOF fi echo "####### m2depend #######" for m in *.mod;do mod=`echo ${m}|sed 's/\.mod$//'` modules=`m2f ${mod}|gawk '$1=="Module"{print $2}'|grep -v '^'${mod}'$'` defs=`(for i in $modules;do if [ -f ${i}.def ];then echo $i;fi;done)|gawk '{printf "%s.def ",$1}'` obj=`echo $defs|sed 's/\.def/.o/g'` if [ -f ${mod}.def ];then defs="${mod}.def ${defs}" else echo "${mod} : ${mod}.o ${obj}" ;echo fi echo "${mod}.o : ${mod}.mod ${defs}" ; echo done for c in *.c ;do mod=`echo $c|gawk '{sub(/\.c$/,"");print}'` if [ -f ${mod}.def ];then echo "`cc -MM ${mod}.c` ${mod}.def";echo # -MM -MG fi done # end
Kodama's home / tips.