diff options
Diffstat (limited to 'tools/d2c/d2c_genmakefile.sh')
-rwxr-xr-x | tools/d2c/d2c_genmakefile.sh | 154 |
1 files changed, 15 insertions, 139 deletions
diff --git a/tools/d2c/d2c_genmakefile.sh b/tools/d2c/d2c_genmakefile.sh index be303e0..d01fa6c 100755 --- a/tools/d2c/d2c_genmakefile.sh +++ b/tools/d2c/d2c_genmakefile.sh @@ -1,17 +1,15 @@ #!/bin/sh -if [ $# -lt 4 ]; then +if [ $# -lt 2 ]; then - echo "Usage: $0 <working dir> <input dir> <global mk> <arch [arch [arch ...]]" + echo "Usage: $0 <opcodes dir> <arch [arch [arch ...]]" exit 1 fi workingdir=$1 -input=$2 -globalmk=$3 -shift 3 +shift 1 OLDPWD=$PWD @@ -23,124 +21,37 @@ cd ${workingdir} echo=`which echo` rm -f ${MAKEFILE_TMP} -$echo >> ${MAKEFILE_TMP} -$echo "include ${globalmk}" >> ${MAKEFILE_TMP} -$echo >> ${MAKEFILE_TMP} +# Génération de la liste des sources -if [ "$1" = "-" ]; then - OPCODES=`find ${input} -name '*c' -and -not -name '*.tmpl.c' -exec basename {} \; | cut -d. -f2 | sort | uniq` -else - OPCODES=`find ${input} -name '*c' -and -not -name '*.tmpl.c' -exec basename {} \; | cut -d. -f3 | sort | uniq` -fi +$echo >> ${MAKEFILE_TMP} -# Génération des en-têtes de décodage +$echo -n "GENERATED_FILES = " >> ${MAKEFILE_TMP} for arch in $*; do if [ ${arch} = "-" ]; then arch_name="" - arch_name_dotted="" else arch_name="${arch}_" - arch_name_dotted="${arch}_." fi - $echo -n "${arch_name}HEADER_FILES =" | tr [:lower:] [:upper:] >> ${MAKEFILE_TMP} - - has_header="" + SOURCES=`find . -type f -name "${arch_name}*.h" -exec basename {} \; | sort` - for op in $OPCODES; + for src in $SOURCES; do - template="${input}/*.${arch_name_dotted}${op}.c" - - sources=`ls $template 2> /dev/null` - - if [ -z "${sources}" ]; then - continue - fi - - for src in ${sources}; - do - has_header="yes" - $echo -ne " \\" >> ${MAKEFILE_TMP} - $echo -ne "\n\t" >> ${MAKEFILE_TMP} - $echo -n ${src} | sed "s/${op}.c$/opcodes.h/" >> ${MAKEFILE_TMP} - done + $echo -ne " \\" >> ${MAKEFILE_TMP} + $echo -ne "\n\t${src}" >> ${MAKEFILE_TMP} done - $echo >> ${MAKEFILE_TMP} - $echo >> ${MAKEFILE_TMP} - - $echo -n "${arch_name}opcodes.h: " >> ${MAKEFILE_TMP} - $echo "\$(${arch_name}HEADER_FILES)" | tr [:lower:] [:upper:] >> ${MAKEFILE_TMP} - - if [ -z "${has_header}" ]; then - - $echo -e "\techo > \$@" >> ${MAKEFILE_TMP} - - else - - $echo -e "\t\$(cini_verbose)cat ${input}/${arch_name_dotted}opcodes.tmpl.h > \$@" >> ${MAKEFILE_TMP} - $echo -e "\t\$(cgen_verbose)cat \$^ >> \$@" >> ${MAKEFILE_TMP} - $echo -e "\t\$(cfini_verbose)echo >> \$@" >> ${MAKEFILE_TMP} - $echo -en "\t\$(cfini_verbose)echo \"#endif\t /* " >> ${MAKEFILE_TMP} - $echo -en '`cat \$@ | grep "#define" | cut -d " " -f 2`' >> ${MAKEFILE_TMP} - $echo -e " */\" >> \$@" >> ${MAKEFILE_TMP} - - fi - - $echo >> ${MAKEFILE_TMP} - -done + SOURCES=`find . -type f -name "${arch_name}*.c" -exec basename {} \; | sort` -$echo >> ${MAKEFILE_TMP} - -# Génération des codes d'instructions - -for op in $OPCODES; -do - for arch in $*; + for src in $SOURCES; do - if [ ${arch} = "-" ]; then - arch_name="" - arch_name_dotted="" - else - arch_name="${arch}_" - arch_name_dotted="${arch}_." - fi - - template="${input}/*.${arch_name_dotted}${op}.c" - - sources=`ls $template 2> /dev/null` - - if [ -z "${sources}" ]; then - continue - fi - - $echo -n "${op}_${arch_name}FILES =" | tr [:lower:] [:upper:] >> ${MAKEFILE_TMP} - - for src in ${sources}; - do - $echo -ne " \\" >> ${MAKEFILE_TMP} - $echo -ne "\n\t${src}" >> ${MAKEFILE_TMP} - done - - $echo >> ${MAKEFILE_TMP} - $echo >> ${MAKEFILE_TMP} - - $echo -n "${arch_name}${op}.c: " >> ${MAKEFILE_TMP} - $echo -n "\$(${op}_${arch_name}FILES)" | tr [:lower:] [:upper:] >> ${MAKEFILE_TMP} - $echo " ${arch_name}opcodes.h" >> ${MAKEFILE_TMP} - - $echo -e "\t\$(cini_verbose)cat ${input}/${arch_name_dotted}${op}.tmpl.c > \$@" >> ${MAKEFILE_TMP} - $echo -ne "\t\$(cgen_verbose)cat \$(" >> ${MAKEFILE_TMP} - $echo -ne "${op}_${arch_name}FILES" | tr [:lower:] [:upper:] >> ${MAKEFILE_TMP} - $echo -e ") >> \$@" >> ${MAKEFILE_TMP} - - $echo >> ${MAKEFILE_TMP} + $echo -ne " \\" >> ${MAKEFILE_TMP} + $echo -ne "\n\t${src}" >> ${MAKEFILE_TMP} done @@ -148,48 +59,13 @@ done $echo >> ${MAKEFILE_TMP} -# Génération de la liste des sources - -$echo -n "GENERATED_FILES =" >> ${MAKEFILE_TMP} - -for arch in $*; -do - if [ ${arch} = "-" ]; then - arch_name="" - arch_name_dotted="" - else - arch_name="${arch}_" - arch_name_dotted="${arch}_." - fi - - $echo -ne " \\" >> ${MAKEFILE_TMP} - $echo -ne "\n\t${arch_name}opcodes.h" >> ${MAKEFILE_TMP} - - for op in $OPCODES; - do - template="${input}/*.${arch_name_dotted}${op}.c" - - sources=`ls $template 2> /dev/null` - - if [ ! -z "${sources}" ]; then - $echo -ne " \\" >> ${MAKEFILE_TMP} - $echo -ne "\n\t${arch_name}${op}.c" >> ${MAKEFILE_TMP} - continue - fi - - done - -done - $echo >> ${MAKEFILE_TMP} -$echo >> ${MAKEFILE_TMP} # Validation finale -if [ ! -f ]; then +if [ ! -f ${MAKEFILE_EXT} ]; then - rm -rf ${MAKEFILE_EXT} mv ${MAKEFILE_TMP} ${MAKEFILE_EXT} else |