#!/bin/sh gencommon () { lint="build/${s%.*}${1}.l" dep="build/${s%.*}${1}.d" obj="build/${s%.*}${1}" echo "${dep}:" >> deps.mk echo "-include ${dep}" >> deps.mk echo "${obj}: ${s}" >> deps.mk } genlink () { gencommon ".ld" if [ ${kern} ]; then echo " \$(GENLINK) ${s} | \$(STRIPLINK) > ${obj}" >> deps.mk else echo " \$(GENLINK) ${s} | \$(STRIPLINK) | \$(KERN_INFO) > ${obj}" >> deps.mk; fi } genrule () { gencommon "${1}" echo " \$(COMPILE) ${flags} -c ${s} -o ${obj}" >> deps.mk echo "${lint}: ${s}" >> deps.mk echo " \$(LINT) ${flags} -c ${s} -o /dev/null" >> deps.mk } case "${1}" in --kernel) kern=1 flags='$(KERN_FLAGS)' ;; --init) flags='$(INIT_FLAGS)' ;; esac case "${2}" in --compile) suffix=.o func=genrule ;; --link) suffix=.ld func=genlink esac echo "${3}" # create all subdirectories mkdir -p $(echo "${3}" | xargs -n 1 dirname | uniq | sed 's|^|build/|g') for s in ${3} do ${func} ${suffix} echo ${obj} done