Boris Kotov wrote:
>It would be really handy to have a simple Makefile-like wrapper scripts 
>syntax just to execute some common commands on it:

If the Makefiles you want to execute are as simple as the example
you quoted (so you don't need things like make variables) the attached
script will munge a Makefile into a shell script and then run it.

To see the generated script run 'minimake -v non_target'.

Modern versions of BusyBox allow shell scripts to be embedded in the
binary.  The script is compressed so in this case it only adds about
450 bytes to the size of the executable.

Ron
#!/bin/sh

MAKEFILE="Makefile"
if [ $# -gt 2 ] && [ "$1" = "-f" ]
then
        MAKEFILE="$2"
        shift
        shift
fi

(
        INCASE=0

        while read -r REPLY
        do
                case $REPLY in
                *:)
                        if [ $INCASE -eq 0 ]
                        then
                                printf "if [ \$# -eq 0 ]\n"
                                printf "then\n"
                                printf "\tTARGET=\"%s\"\n" "${REPLY%:}"
                                printf "else\n"
                                printf "\tTARGET=\"\$1\"\n"
                                printf "fi\n"
                                printf "case \"\$TARGET\" in\n"
                        else
                                printf "\t;;\n"
                        fi
                        printf "%s)\n" "${REPLY%:}"
                        INCASE=1
                        ;;
                "") ;;
                *) printf "\t%s\n" "${REPLY##[  ]}";;
                esac
        done <"$MAKEFILE"

        if [ $INCASE -eq 1 ]
        then
                printf "\t;;\n"
        fi
        printf "*)\n"
        printf "\techo \"No rule to make target '\$1'\"\n"
        printf "\t;;\n"
        printf "esac\n"
) | sh -s "$@"
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to